Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef __HTTP_CLIENT_H_
- #define __HTTP_CLIENT_H_
- #include "spark_wiring_string.h"
- #include "spark_wiring_tcpclient.h"
- #include "spark_wiring_usbserial.h"
- /**
- * Defines for the HTTP methods.
- */
- #define HTTP_METHOD_GET "GET"
- #define HTTP_METHOD_POST "POST"
- #define HTTP_METHOD_PUT "PUT"
- #define HTTP_METHOD_DELETE "DELETE"
- /**
- * This struct is used to pass additional HTTP headers such as API-keys.
- * Normally you pass this as an array. The last entry must have NULL as key.
- */
- typedef struct
- {
- const char* header;
- const char* value;
- } http_header_t;
- /**
- * HTTP Request struct.
- * hostname request host
- * path request path
- * port request port
- * body request body
- */
- typedef struct
- {
- String hostname;
- IPAddress ip;
- String path;
- // TODO: Look at setting the port by default.
- //int port = 80;
- int port;
- String body;
- } http_request_t;
- /**
- * HTTP Response struct.
- * status response status code.
- * body response body
- */
- typedef struct
- {
- int status;
- String body;
- } http_response_t;
- class HttpClient {
- public:
- /**
- * Public references to variables.
- */
- TCPClient client;
- char buffer[1024];
- /**
- * Constructor.
- */
- HttpClient(void);
- /**
- * HTTP request methods.
- * Can't use 'delete' as name since it's a C++ keyword.
- */
- void get(http_request_t &aRequest, http_response_t &aResponse)
- {
- request(aRequest, aResponse, NULL, HTTP_METHOD_GET);
- }
- void post(http_request_t &aRequest, http_response_t &aResponse)
- {
- request(aRequest, aResponse, NULL, HTTP_METHOD_POST);
- }
- void put(http_request_t &aRequest, http_response_t &aResponse)
- {
- request(aRequest, aResponse, NULL, HTTP_METHOD_PUT);
- }
- void del(http_request_t &aRequest, http_response_t &aResponse)
- {
- request(aRequest, aResponse, NULL, HTTP_METHOD_DELETE);
- }
- void get(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
- {
- request(aRequest, aResponse, headers, HTTP_METHOD_GET);
- }
- void post(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
- {
- request(aRequest, aResponse, headers, HTTP_METHOD_POST);
- }
- void put(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
- {
- request(aRequest, aResponse, headers, HTTP_METHOD_PUT);
- }
- void del(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
- {
- request(aRequest, aResponse, headers, HTTP_METHOD_DELETE);
- }
- private:
- /**
- * Underlying HTTP methods.
- */
- void request(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[], const char* aHttpMethod);
- void sendHeader(const char* aHeaderName, const char* aHeaderValue);
- void sendHeader(const char* aHeaderName, const int aHeaderValue);
- void sendHeader(const char* aHeaderName);
- };
- #endif /* __HTTP_CLIENT_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement