From c7e5e7cbfedc5b37c0387dcbe30e9360d812f5dc Mon Sep 17 00:00:00 2001 From: Mark Jones Date: Tue, 3 Jun 2014 10:30:28 -0400 Subject: [PATCH] Added POST to HttpClient Added POST to HttpClient and also the ability to set a header (for API Keys) for GET and POST. --- libraries/Bridge/src/HttpClient.cpp | 57 ++++++++++++++++++++++++++++- libraries/Bridge/src/HttpClient.h | 11 +++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/libraries/Bridge/src/HttpClient.cpp b/libraries/Bridge/src/HttpClient.cpp index c69a76160..14553e6ea 100644 --- a/libraries/Bridge/src/HttpClient.cpp +++ b/libraries/Bridge/src/HttpClient.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013 Arduino LLC. All right reserved. + Copyright (c) 2013-2014 Arduino LLC. All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -28,6 +28,7 @@ unsigned int HttpClient::get(String &url) { if (insecure) { addParameter("-k"); } + addHeader(); addParameter(url); return run(); } @@ -37,6 +38,7 @@ unsigned int HttpClient::get(const char *url) { if (insecure) { addParameter("-k"); } + addHeader(); addParameter(url); return run(); } @@ -46,6 +48,7 @@ void HttpClient::getAsynchronously(String &url) { if (insecure) { addParameter("-k"); } + addHeader(); addParameter(url); runAsynchronously(); } @@ -55,6 +58,43 @@ void HttpClient::getAsynchronously(const char *url) { if (insecure) { addParameter("-k"); } + addHeader(); + addParameter(url); + runAsynchronously(); +} + +unsigned int HttpClient::post(String &url, String &data) { + return post(url.c_str(), data.c_str()); +} + +unsigned int HttpClient::post(const char *url, const char *data) { + begin("curl"); + if (insecure) { + addParameter("-k"); + } + addParameter("--request"); + addParameter("POST"); + addParameter("--data"); + addParameter(data); + addHeader(); + addParameter(url); + return run(); +} + +void HttpClient::postAsynchronously(String &url, String &data) { + postAsynchronously(url.c_str(), data.c_str()); +} + +void HttpClient::postAsynchronously(const char *url, const char *data) { + begin("curl"); + if (insecure) { + addParameter("-k"); + } + addParameter("--request"); + addParameter("POST"); + addParameter("--data"); + addParameter(data); + addHeader(); addParameter(url); runAsynchronously(); } @@ -75,3 +115,18 @@ void HttpClient::checkSSL() { insecure = false; } +void HttpClient::setHeader(String &header) { + this->header = header; +} + +void HttpClient::setHeader(const char * header) { + this->header = String(header); +} + +void HttpClient::addHeader() { + if (header.length() > 0) { + addParameter("--header"); + addParameter(header); + } +} + diff --git a/libraries/Bridge/src/HttpClient.h b/libraries/Bridge/src/HttpClient.h index 97d311d98..4a3165f01 100644 --- a/libraries/Bridge/src/HttpClient.h +++ b/libraries/Bridge/src/HttpClient.h @@ -1,5 +1,5 @@ /* - Copyright (c) 2013 Arduino LLC. All right reserved. + Copyright (c) 2013-2014 Arduino LLC. All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -29,6 +29,12 @@ class HttpClient : public Process { unsigned int get(const char * url); void getAsynchronously(String &url); void getAsynchronously(const char * url); + unsigned int post(String &url, String &data); + unsigned int post(const char * url, const char * data); + void postAsynchronously(String &url, String &data); + void postAsynchronously(const char * url, const char * data); + void setHeader(String &header); + void setHeader(const char * header); boolean ready(); unsigned int getResult(); void noCheckSSL(); @@ -37,6 +43,9 @@ class HttpClient : public Process { private: boolean insecure; + private: + void addHeader(); + String header; }; #endif /* HTTPCLIENT_H_ */