Oct122012mbedLab

Dependents:   Lab3_VoiceMeter

Fork of HTTPClient by masa haru

Committer:
psawant9
Date:
Fri Oct 12 16:02:09 2012 +0000
Revision:
1:b77740c0a846
Parent:
0:62fac7f06c8d
Done

Who changed what in which revision?

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