Added WebAPI class

This commit is contained in:
Balazs Toldi 2021-01-22 10:23:53 +01:00
parent 4f472c7e12
commit 3ab713d618
Signed by: Bazsalanszky
GPG key ID: 933820884952BE27
5 changed files with 74 additions and 1 deletions

View file

@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD 14)
add_subdirectory(external/curl)
add_subdirectory(external/jsoncpp)
add_executable(TradeSim main.cpp src/Market.cpp src/Market.h src/Exchange.cpp src/Exchange.h src/Trader.h src/TradeTracker.cpp src/TradeTracker.h src/Binance.cpp src/Binance.h src/Wallet.cpp src/Wallet.h src/Transaction.cpp src/Transaction.h)
add_executable(TradeSim main.cpp src/Market.cpp src/Market.h src/Exchange.cpp src/Exchange.h src/Trader.h src/TradeTracker.cpp src/TradeTracker.h src/Binance.cpp src/Binance.h src/Wallet.cpp src/Wallet.h src/Transaction.cpp src/Transaction.h src/WebAPI.cpp src/WebAPI.h)
target_link_libraries(TradeSim libcurl)
target_link_libraries(TradeSim jsoncpp_lib)
include_directories(${CURL_INCLUDE_DIR})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -87,6 +87,14 @@ class Transaction{
-double amount
-double price
}
WebAPI <... Binance
class WebAPI{
-String baseURL
+WebAPI(baseURL: String)
+request(path: String): JsonValue
}
@enduml
#+END_SRC

47
src/WebAPI.cpp Normal file
View file

@ -0,0 +1,47 @@
#include "WebAPI.h"
WebAPI::WebAPI(const std::string &baseUrl) : baseURL(baseUrl) {}
Json::Value WebAPI::request(const std::string &path) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
std::string s;
std::string URL = baseURL+path;
curl_easy_setopt(curl, CURLOPT_URL, URL.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
Json::Value root;
JSONCPP_STRING err;
Json::CharReaderBuilder builder;
const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
if (!reader->parse(s.c_str(), s.c_str() + s.length(), &root,
&err)) {
throw "Ivalid JSON!";
}
curl_easy_cleanup(curl);
}
return Json::Value();
}
size_t writefunc(void *ptr, size_t size, size_t nmemb, std::string *s)
{
s->append(static_cast<char *>(ptr), size*nmemb);
return size*nmemb;
}

18
src/WebAPI.h Normal file
View file

@ -0,0 +1,18 @@
#ifndef TRADESIM_WEBAPI_H
#define TRADESIM_WEBAPI_H
#include <string>
#include <curl/curl.h>
#include <json/json.h>
class WebAPI {
std::string baseURL;
public:
WebAPI(const std::string &baseUrl);
Json::Value request(const std::string& path);
};
static size_t writefunc(void *ptr, size_t size, size_t nmemb, std::string *s);
#endif //TRADESIM_WEBAPI_H