Beispiel HTTP GET

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of IoTKit_HTTPClient by mc-b

Committer:
stefan1691
Date:
Wed Mar 11 13:01:58 2015 +0000
Revision:
3:aad64a4b6ff6
Parent:
1:2e29a33cd918
Beispiel HTTP GET

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 1:2e29a33cd918 1 /* IHTTPData.h */
marcel1691 1:2e29a33cd918 2 /* Copyright (C) 2012 mbed.org, MIT License
marcel1691 1:2e29a33cd918 3 *
marcel1691 1:2e29a33cd918 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
marcel1691 1:2e29a33cd918 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
marcel1691 1:2e29a33cd918 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
marcel1691 1:2e29a33cd918 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
marcel1691 1:2e29a33cd918 8 * furnished to do so, subject to the following conditions:
marcel1691 1:2e29a33cd918 9 *
marcel1691 1:2e29a33cd918 10 * The above copyright notice and this permission notice shall be included in all copies or
marcel1691 1:2e29a33cd918 11 * substantial portions of the Software.
marcel1691 1:2e29a33cd918 12 *
marcel1691 1:2e29a33cd918 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
marcel1691 1:2e29a33cd918 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
marcel1691 1:2e29a33cd918 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
marcel1691 1:2e29a33cd918 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
marcel1691 1:2e29a33cd918 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
marcel1691 1:2e29a33cd918 18 */
marcel1691 1:2e29a33cd918 19
marcel1691 1:2e29a33cd918 20 #ifndef IHTTPDATA_H
marcel1691 1:2e29a33cd918 21 #define IHTTPDATA_H
marcel1691 1:2e29a33cd918 22
marcel1691 1:2e29a33cd918 23 #include <cstring>
marcel1691 1:2e29a33cd918 24
marcel1691 1:2e29a33cd918 25 using std::size_t;
marcel1691 1:2e29a33cd918 26
marcel1691 1:2e29a33cd918 27 ///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
marcel1691 1:2e29a33cd918 28 class IHTTPDataOut
marcel1691 1:2e29a33cd918 29 {
marcel1691 1:2e29a33cd918 30 protected:
marcel1691 1:2e29a33cd918 31 friend class HTTPClient;
marcel1691 1:2e29a33cd918 32
marcel1691 1:2e29a33cd918 33 /** Reset stream to its beginning
marcel1691 1:2e29a33cd918 34 * Called by the HTTPClient on each new request
marcel1691 1:2e29a33cd918 35 */
marcel1691 1:2e29a33cd918 36 virtual void readReset() = 0;
marcel1691 1:2e29a33cd918 37
marcel1691 1:2e29a33cd918 38 /** Read a piece of data to be transmitted
marcel1691 1:2e29a33cd918 39 * @param[out] buf Pointer to the buffer on which to copy the data
marcel1691 1:2e29a33cd918 40 * @param[in] len Length of the buffer
marcel1691 1:2e29a33cd918 41 * @param[out] pReadLen Pointer to the variable on which the actual copied data length will be stored
marcel1691 1:2e29a33cd918 42 */
marcel1691 1:2e29a33cd918 43 virtual int read(char* buf, size_t len, size_t* pReadLen) = 0;
marcel1691 1:2e29a33cd918 44
marcel1691 1:2e29a33cd918 45 /** Get MIME type
marcel1691 1:2e29a33cd918 46 * @param[out] type Internet media type from Content-Type header
marcel1691 1:2e29a33cd918 47 * @param[in] maxTypeLen is the size of the type buffer to write to
marcel1691 1:2e29a33cd918 48 */
marcel1691 1:2e29a33cd918 49 virtual int getDataType(char* type, size_t maxTypeLen) = 0; //Internet media type for Content-Type header
marcel1691 1:2e29a33cd918 50
marcel1691 1:2e29a33cd918 51 /** Determine whether the HTTP client should chunk the data
marcel1691 1:2e29a33cd918 52 * Used for Transfer-Encoding header
marcel1691 1:2e29a33cd918 53 */
marcel1691 1:2e29a33cd918 54 virtual bool getIsChunked() = 0;
marcel1691 1:2e29a33cd918 55
marcel1691 1:2e29a33cd918 56 /** If the data is not chunked, get its size
marcel1691 1:2e29a33cd918 57 * Used for Content-Length header
marcel1691 1:2e29a33cd918 58 */
marcel1691 1:2e29a33cd918 59 virtual size_t getDataLen() = 0;
marcel1691 1:2e29a33cd918 60
marcel1691 1:2e29a33cd918 61 };
marcel1691 1:2e29a33cd918 62
marcel1691 1:2e29a33cd918 63 ///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
marcel1691 1:2e29a33cd918 64 class IHTTPDataIn
marcel1691 1:2e29a33cd918 65 {
marcel1691 1:2e29a33cd918 66 protected:
marcel1691 1:2e29a33cd918 67 friend class HTTPClient;
marcel1691 1:2e29a33cd918 68
marcel1691 1:2e29a33cd918 69 /** Reset stream to its beginning
marcel1691 1:2e29a33cd918 70 * Called by the HTTPClient on each new request
marcel1691 1:2e29a33cd918 71 */
marcel1691 1:2e29a33cd918 72 virtual void writeReset() = 0;
marcel1691 1:2e29a33cd918 73
marcel1691 1:2e29a33cd918 74 /** Write a piece of data transmitted by the server
marcel1691 1:2e29a33cd918 75 * @param buf Pointer to the buffer from which to copy the data
marcel1691 1:2e29a33cd918 76 * @param len Length of the buffer
marcel1691 1:2e29a33cd918 77 */
marcel1691 1:2e29a33cd918 78 virtual int write(const char* buf, size_t len) = 0;
marcel1691 1:2e29a33cd918 79
marcel1691 1:2e29a33cd918 80 /** Set MIME type
marcel1691 1:2e29a33cd918 81 * @param type Internet media type from Content-Type header
marcel1691 1:2e29a33cd918 82 */
marcel1691 1:2e29a33cd918 83 virtual void setDataType(const char* type) = 0;
marcel1691 1:2e29a33cd918 84
marcel1691 1:2e29a33cd918 85 /** Determine whether the data is chunked
marcel1691 1:2e29a33cd918 86 * Recovered from Transfer-Encoding header
marcel1691 1:2e29a33cd918 87 */
marcel1691 1:2e29a33cd918 88 virtual void setIsChunked(bool chunked) = 0;
marcel1691 1:2e29a33cd918 89
marcel1691 1:2e29a33cd918 90 /** If the data is not chunked, set its size
marcel1691 1:2e29a33cd918 91 * From Content-Length header
marcel1691 1:2e29a33cd918 92 */
marcel1691 1:2e29a33cd918 93 virtual void setDataLen(size_t len) = 0;
marcel1691 1:2e29a33cd918 94
marcel1691 1:2e29a33cd918 95 };
marcel1691 1:2e29a33cd918 96
marcel1691 1:2e29a33cd918 97 #endif