The code from https://github.com/vpcola/Nucleo
HttpClient.h@0:5464d5e415e5, 2014-10-08 (annotated)
- Committer:
- sinrab
- Date:
- Wed Oct 08 11:00:24 2014 +0000
- Revision:
- 0:5464d5e415e5
The code from https://github.com/vpcola/Nucleo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sinrab | 0:5464d5e415e5 | 1 | #ifndef __HTTP_CLIENT_H__ |
sinrab | 0:5464d5e415e5 | 2 | #define __HTTP_CLIENT_H__ |
sinrab | 0:5464d5e415e5 | 3 | |
sinrab | 0:5464d5e415e5 | 4 | #include "mbed.h" |
sinrab | 0:5464d5e415e5 | 5 | #include <string> |
sinrab | 0:5464d5e415e5 | 6 | #include <map> |
sinrab | 0:5464d5e415e5 | 7 | #include "TCPSocketConnection.h" |
sinrab | 0:5464d5e415e5 | 8 | |
sinrab | 0:5464d5e415e5 | 9 | enum content_type{ |
sinrab | 0:5464d5e415e5 | 10 | CONTENT_TYPE_TEXT, |
sinrab | 0:5464d5e415e5 | 11 | CONTENT_TYPE_APPLICATION, |
sinrab | 0:5464d5e415e5 | 12 | CONTENT_TYPE_IMAGE, |
sinrab | 0:5464d5e415e5 | 13 | CONTENT_TYPE_MESSAGE |
sinrab | 0:5464d5e415e5 | 14 | }; |
sinrab | 0:5464d5e415e5 | 15 | |
sinrab | 0:5464d5e415e5 | 16 | |
sinrab | 0:5464d5e415e5 | 17 | typedef struct { |
sinrab | 0:5464d5e415e5 | 18 | int http_response; |
sinrab | 0:5464d5e415e5 | 19 | std::string http_response_text; |
sinrab | 0:5464d5e415e5 | 20 | std::map<std::string, std::string> http_info; |
sinrab | 0:5464d5e415e5 | 21 | } HeaderInfo; |
sinrab | 0:5464d5e415e5 | 22 | |
sinrab | 0:5464d5e415e5 | 23 | class HttpClient |
sinrab | 0:5464d5e415e5 | 24 | { |
sinrab | 0:5464d5e415e5 | 25 | public: |
sinrab | 0:5464d5e415e5 | 26 | HttpClient(const char * hostname); |
sinrab | 0:5464d5e415e5 | 27 | int get(const char * url, char * buffer, size_t buf_len, HeaderInfo & hinfo, int timeout = 5000); |
sinrab | 0:5464d5e415e5 | 28 | |
sinrab | 0:5464d5e415e5 | 29 | private: |
sinrab | 0:5464d5e415e5 | 30 | std::string build_http_headers(std::string type, std::string path); |
sinrab | 0:5464d5e415e5 | 31 | int parse_url(const char* url, |
sinrab | 0:5464d5e415e5 | 32 | char* scheme, |
sinrab | 0:5464d5e415e5 | 33 | size_t scheme_len, |
sinrab | 0:5464d5e415e5 | 34 | char* host, |
sinrab | 0:5464d5e415e5 | 35 | size_t host_len, |
sinrab | 0:5464d5e415e5 | 36 | uint16_t* port, |
sinrab | 0:5464d5e415e5 | 37 | char* path, size_t max_path); |
sinrab | 0:5464d5e415e5 | 38 | |
sinrab | 0:5464d5e415e5 | 39 | int parse_headers(std::string header_line, HeaderInfo & hinfo, int line); |
sinrab | 0:5464d5e415e5 | 40 | |
sinrab | 0:5464d5e415e5 | 41 | int read_data(HeaderInfo & hinfo, char * buffer, size_t buf_len); |
sinrab | 0:5464d5e415e5 | 42 | |
sinrab | 0:5464d5e415e5 | 43 | int send(char* buf, size_t len); |
sinrab | 0:5464d5e415e5 | 44 | // Receive untill a char term is received |
sinrab | 0:5464d5e415e5 | 45 | int recv_until(char * buf, size_t len, char term); |
sinrab | 0:5464d5e415e5 | 46 | |
sinrab | 0:5464d5e415e5 | 47 | std::string _hostname; // The name of this local host |
sinrab | 0:5464d5e415e5 | 48 | int _timeout; |
sinrab | 0:5464d5e415e5 | 49 | TCPSocketConnection m_sock; |
sinrab | 0:5464d5e415e5 | 50 | int _httpResponse; |
sinrab | 0:5464d5e415e5 | 51 | }; |
sinrab | 0:5464d5e415e5 | 52 | |
sinrab | 0:5464d5e415e5 | 53 | #endif |
sinrab | 0:5464d5e415e5 | 54 |