PullRequest

Dependents:   CyaSSL-Twitter-OAuth4Tw TweetTest NetworkThermometer CyaSSL-Twitter-OAuth4Tw_arrange

Fork of HTTPClient by wolf SSL

Revision:
18:d89df40b4cf3
Parent:
17:c73d8e61d391
Child:
19:1e2f05809eb1
--- a/HTTPClient.h	Mon Apr 07 23:30:35 2014 +0000
+++ b/HTTPClient.h	Mon Apr 07 23:41:06 2014 +0000
@@ -32,19 +32,18 @@
 #include "mbed.h"
 
 ///HTTP client results
-enum HTTPResult
-{
-  HTTP_PROCESSING, ///<Processing
-  HTTP_PARSE, ///<url Parse error
-  HTTP_DNS, ///<Could not resolve name
-  HTTP_PRTCL, ///<Protocol error
-  HTTP_NOTFOUND, ///<HTTP 404 Error
-  HTTP_REFUSED, ///<HTTP 403 Error
-  HTTP_ERROR, ///<HTTP xxx error
-  HTTP_TIMEOUT, ///<Connection timeout
-  HTTP_CONN, ///<Connection error
-  HTTP_CLOSED, ///<Connection was closed by remote host
-  HTTP_OK = 0, ///<Success
+enum HTTPResult {
+    HTTP_PROCESSING, ///<Processing
+    HTTP_PARSE, ///<url Parse error
+    HTTP_DNS, ///<Could not resolve name
+    HTTP_PRTCL, ///<Protocol error
+    HTTP_NOTFOUND, ///<HTTP 404 Error
+    HTTP_REFUSED, ///<HTTP 403 Error
+    HTTP_ERROR, ///<HTTP xxx error
+    HTTP_TIMEOUT, ///<Connection timeout
+    HTTP_CONN, ///<Connection error
+    HTTP_CLOSED, ///<Connection was closed by remote host
+    HTTP_OK = 0, ///<Success
 };
 
 /**A simple HTTP Client
@@ -55,107 +54,106 @@
 class HTTPClient
 {
 public:
-  ///Instantiate the HTTP client
-  HTTPClient();
-  ~HTTPClient();
-  
+    ///Instantiate the HTTP client
+    HTTPClient();
+    ~HTTPClient();
+
 #if 0 //TODO add header handlers
-  /**
-  Provides a basic authentification feature (Base64 encoded username and password)
-  Pass two NULL pointers to switch back to no authentication
-  @param user username to use for authentication, must remain valid durlng the whole HTTP session
-  @param user password to use for authentication, must remain valid durlng the whole HTTP session
-  */
-  void basicAuth(const char* user, const char* password); //Basic Authentification
+    /**
+    Provides a basic authentification feature (Base64 encoded username and password)
+    Pass two NULL pointers to switch back to no authentication
+    @param user username to use for authentication, must remain valid durlng the whole HTTP session
+    @param user password to use for authentication, must remain valid durlng the whole HTTP session
+    */
+    void basicAuth(const char* user, const char* password); //Basic Authentification
 #endif
-  
-  //High Level setup functions
-  /** Execute a GET request on the URL
-  Blocks until completion
-  @param url : url on which to execute the request
-  @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
-  @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
-  @return 0 on success, HTTP error (<0) on failure
-  */
-  HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
-  
-  /** Execute a GET request on the URL
-  Blocks until completion
-  This is a helper to directly get a piece of text from a HTTP result
-  @param url : url on which to execute the request
-  @param result : pointer to a char array in which the result will be stored
-  @param maxResultLen : length of the char array (including space for the NULL-terminating char)
-  @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
-  @return 0 on success, HTTP error (<0) on failure
-  */
-  HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+    //High Level setup functions
+    /** Execute a GET request on the URL
+    Blocks until completion
+    @param url : url on which to execute the request
+    @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+    @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+    @return 0 on success, HTTP error (<0) on failure
+    */
+    HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+    /** Execute a GET request on the URL
+    Blocks until completion
+    This is a helper to directly get a piece of text from a HTTP result
+    @param url : url on which to execute the request
+    @param result : pointer to a char array in which the result will be stored
+    @param maxResultLen : length of the char array (including space for the NULL-terminating char)
+    @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+    @return 0 on success, HTTP error (<0) on failure
+    */
+    HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+    /** Execute a POST request on the URL
+    Blocks until completion
+    @param url : url on which to execute the request
+    @param dataOut : a IHTTPDataOut instance that contains the data that will be posted
+    @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+    @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+    @return 0 on success, HTTP error (<0) on failure
+    */
+    HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
 
-  /** Execute a POST request on the URL
-  Blocks until completion
-  @param url : url on which to execute the request
-  @param dataOut : a IHTTPDataOut instance that contains the data that will be posted
-  @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
-  @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
-  @return 0 on success, HTTP error (<0) on failure
-  */
-  HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
-  
-  /** Execute a PUT request on the URL
-  Blocks until completion
-  @param url : url on which to execute the request
-  @param dataOut : a IHTTPDataOut instance that contains the data that will be put
-  @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
-  @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
-  @return 0 on success, HTTP error (<0) on failure
-  */
-  HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
-  
-  /** Execute a DELETE request on the URL
-  Blocks until completion
-  @param url : url on which to execute the request
-  @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
-  @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
-  @return 0 on success, HTTP error (<0) on failure
-  */
-  HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
-  
-  /** Get last request's HTTP response code
-  @return The HTTP response code of the last request
-  */
-  int getHTTPResponseCode();
-  void setHeader(char *header) ;
-  
+    /** Execute a PUT request on the URL
+    Blocks until completion
+    @param url : url on which to execute the request
+    @param dataOut : a IHTTPDataOut instance that contains the data that will be put
+    @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+    @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+    @return 0 on success, HTTP error (<0) on failure
+    */
+    HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+    /** Execute a DELETE request on the URL
+    Blocks until completion
+    @param url : url on which to execute the request
+    @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+    @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+    @return 0 on success, HTTP error (<0) on failure
+    */
+    HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+    /** Get last request's HTTP response code
+    @return The HTTP response code of the last request
+    */
+    int getHTTPResponseCode();
+    void setHeader(char *header) ;
+
 private:
-  enum HTTP_METH
-  {
-    HTTP_GET,
-    HTTP_POST,
-    HTTP_PUT,
-    HTTP_DELETE,
-    HTTP_HEAD
-  };
+    enum HTTP_METH {
+        HTTP_GET,
+        HTTP_POST,
+        HTTP_PUT,
+        HTTP_DELETE,
+        HTTP_HEAD
+    };
+
+    HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request
+    HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure
+    HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure
+    HTTPResult flush(void); //0 on success, err code on failure
+    HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL
+    void cyassl_free(void) ;
 
-  HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request
-  HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure
-  HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure
-  HTTPResult flush(void); //0 on success, err code on failure
-  HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL
-  void cyassl_free(void) ;
-  
-  //Parameters
-  
-  int m_timeout;
+    //Parameters
+
+    int m_timeout;
 
-  const char* m_basicAuthUser;
-  const char* m_basicAuthPassword;
-  int m_httpResponseCode;
+    const char* m_basicAuthUser;
+    const char* m_basicAuthPassword;
+    int m_httpResponseCode;
 
-  char * header ;
-  /* for CyaSSL */
-  int      sockfd;
-  uint16_t port;
-  struct CYASSL_CTX* ctx ;
-  struct CYASSL    * ssl ;
+    char * header ;
+    /* for CyaSSL */
+    int      sockfd;
+    uint16_t port;
+    struct CYASSL_CTX* ctx ;
+    struct CYASSL    * ssl ;
 };
 
 //Including data containers here for more convenience