HTTPClient using static IP

Dependencies:   mbed

Committer:
mr_q
Date:
Mon May 30 11:53:37 2011 +0000
Revision:
0:d8f2f7d5f31b
v0.01 Draft

Who changed what in which revision?

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