forked from Syntax-Error/TradeSim
Added WebAPI class
This commit is contained in:
parent
4f472c7e12
commit
3ab713d618
5 changed files with 74 additions and 1 deletions
|
@ -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 |
|
@ -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
47
src/WebAPI.cpp
Normal 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
18
src/WebAPI.h
Normal 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
|
Loading…
Reference in a new issue