NetServices Stack source

Dependents:   HelloWorld ServoInterfaceBoardExample1 4180_Lab4

Committer:
donatien
Date:
Thu Aug 05 14:54:16 2010 +0000
Revision:
10:d098e9192450
Parent:
9:c79fa4034f5b

        

Who changed what in which revision?

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