HTTP Client library

Dependents:   weather_LCD_display News_LCD_display TwitterExample_1 GeoLocation_LCD_Display ... more

Committer:
donatien
Date:
Thu Aug 05 15:09:46 2010 +0000
Revision:
5:d0be6af2d1db
Parent:
0:a828ace1f38d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:a828ace1f38d 1
donatien 0:a828ace1f38d 2 /*
donatien 0:a828ace1f38d 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
donatien 0:a828ace1f38d 4
donatien 0:a828ace1f38d 5 Permission is hereby granted, free of charge, to any person obtaining a copy
donatien 0:a828ace1f38d 6 of this software and associated documentation files (the "Software"), to deal
donatien 0:a828ace1f38d 7 in the Software without restriction, including without limitation the rights
donatien 0:a828ace1f38d 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
donatien 0:a828ace1f38d 9 copies of the Software, and to permit persons to whom the Software is
donatien 0:a828ace1f38d 10 furnished to do so, subject to the following conditions:
donatien 0:a828ace1f38d 11
donatien 0:a828ace1f38d 12 The above copyright notice and this permission notice shall be included in
donatien 0:a828ace1f38d 13 all copies or substantial portions of the Software.
donatien 0:a828ace1f38d 14
donatien 0:a828ace1f38d 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
donatien 0:a828ace1f38d 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
donatien 0:a828ace1f38d 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
donatien 0:a828ace1f38d 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
donatien 0:a828ace1f38d 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 0:a828ace1f38d 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
donatien 0:a828ace1f38d 21 THE SOFTWARE.
donatien 0:a828ace1f38d 22 */
donatien 0:a828ace1f38d 23
donatien 5:d0be6af2d1db 24 /** \file
donatien 5:d0be6af2d1db 25 HTTP File data source/sink header file
donatien 5:d0be6af2d1db 26 */
donatien 5:d0be6af2d1db 27
donatien 0:a828ace1f38d 28 #ifndef HTTP_FILE_H
donatien 0:a828ace1f38d 29 #define HTTP_FILE_H
donatien 0:a828ace1f38d 30
donatien 0:a828ace1f38d 31 #include "../HTTPData.h"
donatien 0:a828ace1f38d 32 #include "mbed.h"
donatien 0:a828ace1f38d 33
donatien 5:d0be6af2d1db 34 ///HTTP Client data container for files
donatien 5:d0be6af2d1db 35 /**
donatien 5:d0be6af2d1db 36 This class provides file access/storage for HTTP requests and responses' data payloads.
donatien 5:d0be6af2d1db 37
donatien 5:d0be6af2d1db 38
donatien 5:d0be6af2d1db 39 */
donatien 0:a828ace1f38d 40 class HTTPFile : public HTTPData //Read or Write data from a file
donatien 0:a828ace1f38d 41 {
donatien 0:a828ace1f38d 42 public:
donatien 5:d0be6af2d1db 43 ///Instantiates data source/sink with file in param.
donatien 5:d0be6af2d1db 44 /**
donatien 5:d0be6af2d1db 45 Uses file at path @a path.
donatien 5:d0be6af2d1db 46 It will be opened when some data has to be read/written from/to it and closed when this operation is complete or on destruction of the instance.
donatien 5:d0be6af2d1db 47 Note that the file will be opened with mode "w" for writing and mode "r" for reading, so the file will be cleared between each request if you are using it for writing.
donatien 5:d0be6af2d1db 48
donatien 5:d0be6af2d1db 49 @note
donatien 5:d0be6af2d1db 50 Note that to use this you must instantiate a proper file system (such as the LocalFileSystem or the SDFileSystem).
donatien 5:d0be6af2d1db 51 */
donatien 0:a828ace1f38d 52 HTTPFile(const char* path);
donatien 0:a828ace1f38d 53 virtual ~HTTPFile();
donatien 0:a828ace1f38d 54
donatien 5:d0be6af2d1db 55 ///Forces file closure
donatien 0:a828ace1f38d 56 virtual void clear();
donatien 0:a828ace1f38d 57
donatien 0:a828ace1f38d 58 protected:
donatien 0:a828ace1f38d 59 virtual int read(char* buf, int len);
donatien 0:a828ace1f38d 60 virtual int write(const char* buf, int len);
donatien 0:a828ace1f38d 61
donatien 0:a828ace1f38d 62 virtual string getDataType(); //Internet media type for Content-Type header
donatien 0:a828ace1f38d 63 virtual void setDataType(const string& type); //Internet media type from Content-Type header
donatien 0:a828ace1f38d 64
donatien 0:a828ace1f38d 65 virtual bool getIsChunked(); //For Transfer-Encoding header
donatien 0:a828ace1f38d 66 virtual void setIsChunked(bool chunked); //From Transfer-Encoding header virtual
donatien 0:a828ace1f38d 67
donatien 0:a828ace1f38d 68 virtual int getDataLen(); //For Content-Length header
donatien 0:a828ace1f38d 69 virtual void setDataLen(int len); //From Content-Length header
donatien 0:a828ace1f38d 70
donatien 0:a828ace1f38d 71 private:
donatien 0:a828ace1f38d 72 bool openFile(const char* mode); //true on success, false otherwise
donatien 0:a828ace1f38d 73 void closeFile();
donatien 0:a828ace1f38d 74
donatien 0:a828ace1f38d 75 FILE* m_fp;
donatien 0:a828ace1f38d 76 string m_path;
donatien 0:a828ace1f38d 77 int m_len;
donatien 0:a828ace1f38d 78 bool m_chunked;
donatien 0:a828ace1f38d 79 };
donatien 0:a828ace1f38d 80
donatien 0:a828ace1f38d 81 #endif