Advertisement
Guest User

Untitled

a guest
Jun 16th, 2014
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.01 KB | None | 0 0
  1. #ifndef __HTTP_CLIENT_H_
  2. #define __HTTP_CLIENT_H_
  3.  
  4. #include "spark_wiring_string.h"
  5. #include "spark_wiring_tcpclient.h"
  6. #include "spark_wiring_usbserial.h"
  7.  
  8. /**
  9.  * Defines for the HTTP methods.
  10.  */
  11. #define HTTP_METHOD_GET    "GET"
  12. #define HTTP_METHOD_POST   "POST"
  13. #define HTTP_METHOD_PUT    "PUT"
  14. #define HTTP_METHOD_DELETE "DELETE"
  15.  
  16. /**
  17.  * This struct is used to pass additional HTTP headers such as API-keys.
  18.  * Normally you pass this as an array. The last entry must have NULL as key.
  19.  */
  20. typedef struct
  21. {
  22.   const char* header;
  23.   const char* value;
  24. } http_header_t;
  25.  
  26. /**
  27.  * HTTP Request struct.
  28.  * hostname request host
  29.  * path  request path
  30.  * port     request port
  31.  * body  request body
  32.  */
  33. typedef struct
  34. {
  35.   String hostname;
  36.   IPAddress ip;
  37.   String path;
  38.   // TODO: Look at setting the port by default.
  39.   //int port = 80;
  40.   int port;
  41.   String body;
  42. } http_request_t;
  43.  
  44. /**
  45.  * HTTP Response struct.
  46.  * status  response status code.
  47.  * body response body
  48.  */
  49. typedef struct
  50. {
  51.   int status;
  52.   String body;
  53. } http_response_t;
  54.  
  55. class HttpClient {
  56. public:
  57.     /**
  58.     * Public references to variables.
  59.     */
  60.     TCPClient client;
  61.     char buffer[1024];
  62.  
  63.     /**
  64.     * Constructor.
  65.     */
  66.     HttpClient(void);
  67.  
  68.     /**
  69.     * HTTP request methods.
  70.     * Can't use 'delete' as name since it's a C++ keyword.
  71.     */
  72.     void get(http_request_t &aRequest, http_response_t &aResponse)
  73.     {
  74.         request(aRequest, aResponse, NULL, HTTP_METHOD_GET);
  75.     }
  76.  
  77.     void post(http_request_t &aRequest, http_response_t &aResponse)
  78.     {
  79.         request(aRequest, aResponse, NULL, HTTP_METHOD_POST);
  80.     }
  81.  
  82.     void put(http_request_t &aRequest, http_response_t &aResponse)
  83.     {
  84.         request(aRequest, aResponse, NULL, HTTP_METHOD_PUT);
  85.     }
  86.  
  87.     void del(http_request_t &aRequest, http_response_t &aResponse)
  88.     {
  89.         request(aRequest, aResponse, NULL, HTTP_METHOD_DELETE);
  90.     }
  91.  
  92.     void get(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
  93.     {
  94.         request(aRequest, aResponse, headers, HTTP_METHOD_GET);
  95.     }
  96.  
  97.     void post(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
  98.     {
  99.         request(aRequest, aResponse, headers, HTTP_METHOD_POST);
  100.     }
  101.  
  102.     void put(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
  103.     {
  104.         request(aRequest, aResponse, headers, HTTP_METHOD_PUT);
  105.     }
  106.  
  107.     void del(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[])
  108.     {
  109.         request(aRequest, aResponse, headers, HTTP_METHOD_DELETE);
  110.     }
  111.  
  112. private:
  113.     /**
  114.     * Underlying HTTP methods.
  115.     */
  116.     void request(http_request_t &aRequest, http_response_t &aResponse, http_header_t headers[], const char* aHttpMethod);
  117.     void sendHeader(const char* aHeaderName, const char* aHeaderValue);
  118.     void sendHeader(const char* aHeaderName, const int aHeaderValue);
  119.     void sendHeader(const char* aHeaderName);
  120. };
  121.  
  122. #endif /* __HTTP_CLIENT_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement