Dependents:   Lab3Translator lab3_Radio_design Sync WeatherPlatform_20110408 ... more

Committer:
mamezu
Date:
Thu Dec 09 01:36:34 2010 +0000
Revision:
0:62fac7f06c8d

        

Who changed what in which revision?

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