cleanups and clarity

This commit is contained in:
DarthArgus
2016-08-06 02:35:55 +00:00
parent 00fef810e7
commit 207449547f
4 changed files with 37 additions and 23 deletions
+23 -9
View File
@@ -27,7 +27,7 @@ statusVal: the expected value in the case of success
webAPI::statusMessage webAPI::simplePost(const string &endpoint, const string &data, const string &slotName, const string &messageSlot, const string &statusSlot, const string &statusVal)
{
// declare our output and go ahead and attempt to get data from remote
nlohmann::json response = request(endpoint, data, 1);
nlohmann::json response = request(endpoint, data);
// if we got data back...
if (response.count(statusSlot) && response[statusSlot].get<std::string>() == statusVal && response.count(slotName))
@@ -61,29 +61,43 @@ nlohmann::json webAPI::request(const string &endpoint, const string &data, const
string readBuffer; // container for the remote response
long http_code = 0; // we get this after performing the get or post
curl_easy_setopt(curl, CURLOPT_URL, endpoint.c_str()); // endpoint is always specified by caller
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); // place the data into readBuffer using writeCallback
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); // specify readBuffer as the container for data
if (reqType == 1)
switch (reqType)
{
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
} //todo - get request? etc
case 1:
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
curl_easy_setopt(curl, CURLOPT_URL, endpoint.c_str());
break;
case 2:
std::string getURI = endpoint + "?" + data;
curl_easy_setopt(curl, CURLOPT_URL, getURI.c_str());
break;
// want to do a put, or whatever other type? feel free to add here
}
CURLcode res = curl_easy_perform(curl); // make the request!
char *contentType;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); //get status code
curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &contentType);
if (res == CURLE_OK && http_code == 200 && !(readBuffer.empty())) // check it all out and parse
{
try {
// if we ever use anything other than json we can break the stuff below output
// into a separate function...
try
{
response = nlohmann::json::parse(readBuffer);
}
catch (string &e) {
catch (string &e)
{
response["message"] = e;
response["status"] = "failure";
}
catch (...) {
catch (...)
{
response["message"] = "JSON parse error for endpoint.";
response["status"] = "failure";
}