Fork of the working HTTPClient adaptation using CyaSSL. This version adds a derivation of HTTPText called HTTPJson to emit JSON text properly. Additionally, the URL parser has defines that permit longer URLs to be utilized.
Dependents: SalesforceInterface df-2014-heroku-thermostat-k64f SalesforceInterface
Fork of HTTPClient by
This is a fork of the working HTTPS/SSL library that contains two extensions:
- HTTPJson - a derivation of HTTPText for emitting JSON strings specifically. No JSON parsing/checking is accomplished - HTTPJson simply sets the right Content-Type for HTTP(S).
- Expanded internal buffers for longer URLs. This is set in HTTPClient.cpp and is tunable.
Revision 37:29941a3bae90, committed 2014-09-18
- Comitter:
- ansond
- Date:
- Thu Sep 18 03:21:13 2014 +0000
- Parent:
- 36:debaeb6006a7
- Child:
- 38:38720bd5dd16
- Commit message:
- updates including the addition of oauth headers support
Changed in this revision
--- a/HTTPClient.cpp Wed Sep 17 21:36:14 2014 +0000 +++ b/HTTPClient.cpp Thu Sep 18 03:21:13 2014 +0000 @@ -26,12 +26,12 @@ #include "rtos.h" //Debug is disabled by default -#ifdef DEBUG_HTTP +#if 1 //Enable debug #include <cstdio> -#define DBG(x, ...) std::printf("[HTTPClient : DBG]"x"\r\n", ##__VA_ARGS__); -#define WARN(x, ...) std::printf("[HTTPClient : WARN]"x"\r\n", ##__VA_ARGS__); -#define ERR(x, ...) std::printf("[HTTPClient : ERR]"x"\r\n", ##__VA_ARGS__); +#define DBG(x, ...) std::printf("[HTTPClient : DBG] "x"\r\n", ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[HTTPClient : WARN] "x"\r\n", ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[HTTPClient : ERR] "x"\r\n", ##__VA_ARGS__); #else //Disable debug @@ -60,7 +60,7 @@ #include "TCPSocketConnection.h" static TCPSocketConnection m_sock; -#define CHUNK_SIZE 256 +#define CHUNK_SIZE 512 #define SEND_BUF_SIZE 1024 static char send_buf[SEND_BUF_SIZE] ; static char *send_buf_p = NULL; @@ -116,8 +116,8 @@ HTTPClient::HTTPClient() : m_basicAuthUser(NULL), m_basicAuthPassword(NULL), m_httpResponseCode(0), m_oauthToken(NULL) { - - /* CyaSSL_Debugging_ON() ; */ + // To DEBUG the underlying SSL - uncomment this... + CyaSSL_Debugging_ON(); ctx = 0 ; ssl = 0 ; @@ -340,8 +340,7 @@ } } - DBG("ctx=%x, ssl=%x, ssl->ctx->CBIORecv, CBIOSend=%x, %x\n", - ctx, ssl, SocketReceive, SocketSend ) ; + DBG("ctx=%x, ssl=%x, ssl->ctx->CBIORecv, CBIOSend=%x, %x\n",ctx, ssl, SocketReceive, SocketSend ) ; int result = CyaSSL_connect(ssl); if (result != SSL_SUCCESS) { ERR("SSL_connect failed");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/HTTPFormEncoded.cpp Thu Sep 18 03:21:13 2014 +0000 @@ -0,0 +1,41 @@ +/* HTTPJson.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "HTTPFormEncoded.h" + +#define OK 0 + +using std::strncpy; + +HTTPFormEncoded::HTTPFormEncoded(char* json_str) : HTTPText(json_str) +{ + +} + +HTTPFormEncoded::HTTPFormEncoded(char* json_str, size_t size) : HTTPText(json_str,size) +{ + +} + +/*virtual*/ int HTTPFormEncoded::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header +{ + strncpy(type, "application/x-www-form-urlencoded", maxTypeLen-1); + type[maxTypeLen-1] = '\0'; + return OK; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/HTTPFormEncoded.h Thu Sep 18 03:21:13 2014 +0000 @@ -0,0 +1,46 @@ +/* HTTPJson.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HTTP_FORM_ENCODED_H_ +#define HTTP_FORM_ENCODED_H_ + +#include "HTTPText.h" + +/** A data endpoint to store application/x-www-form-urlencoded text +*/ +class HTTPFormEncoded : public HTTPText +{ +public: + /** Create an HTTPJson instance for output + * @param json_str JSON string to be transmitted + */ + HTTPFormEncoded(char* json_str); + + /** Create an HTTPText instance for input + * @param json_str Buffer to store the incoming JSON string + * @param size Size of the buffer + */ + HTTPFormEncoded(char* json_str, size_t size); + +protected: + virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header +}; + +#endif /* HTTP_FORM_ENCODED_H_ */ \ No newline at end of file