#include <iostream>
#include <curl/curl.h>
#include <rapidjson/document.h>
size_t WriteCallback(void contents, size_t size, size_t nmemb, std::string output) {
size_t total_size = size * nmemb;
output->append((char*)contents, total_size);
return total_size;
}
double getDogecoinPrice() {
CURL* curl;
CURLcode res;
std::string readBuffer;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://api.coingecko.com/api/v3/simple/price?ids=dogecoin&vs_currencies=usd");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
rapidjson::Document document;
document.Parse(readBuffer.c_str());
if (!document.HasParseError() && document.IsObject() && document.HasMember("dogecoin") && document["dogecoin"].IsObject() && document["dogecoin"].HasMember("usd") && document["dogecoin"]["usd"].IsNumber()) {
return document["dogecoin"]["usd"].GetDouble();
}
return -1.0;
}
int main() {
double dogecoinPrice = getDogecoinPrice();
if (dogecoinPrice != -1.0) {
std::cout << "Current Dogecoin Price: $" << dogecoinPrice << std::endl;
} else {
std::cerr << "Failed to fetch Dogecoin price." << std::endl;
}
return 0;
}