HTTP Client data container for form(multipart/form-data)

Dependencies:   mbed EthernetInterface HTTPClient mbed-rtos

Committer:
va009039
Date:
Thu May 31 10:32:39 2012 +0000
Revision:
0:fcd577a3925b

        

Who changed what in which revision?

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