21 std::string
apiUrl =
"https://api.exchangerate-api.com/v4/latest/";
26 double convert(
double amount,
const std::string &from,
const std::string &to);
27 void updateRate(
const std::string ¤cy,
double rate);
72 if (from == to)
return amount;
77 double inBase = amount / fromRate;
78 return inBase * toRate;
94 auto now = std::chrono::system_clock::now();
95 auto elapsed = std::chrono::duration_cast<std::chrono::minutes>(now -
lastUpdate);
Handles currency conversion with automatic exchange rate updates from API.
Definition CurrencyConverter.h:15
double convert(double amount, const std::string &from, const std::string &to)
Definition CurrencyConverter.h:71
bool isCacheValid() const
Checks if cached rates are still valid.
Definition CurrencyConverter.h:93
std::chrono::system_clock::time_point lastUpdate
Definition CurrencyConverter.h:23
bool updateRatesIfNeeded()
Automatically updates rates if cache has expired.
Definition CurrencyConverter.cpp:99
bool fetchRatesFromAPI(const std::string &base="")
Fetches exchange rates from the configured API.
Definition CurrencyConverter.cpp:10
std::chrono::minutes cacheTimeout
Definition CurrencyConverter.h:24
std::string apiKey
Definition CurrencyConverter.h:20
void setApiUrl(const std::string &url)
Sets a custom API URL (for different exchange rate providers)
Definition CurrencyConverter.h:85
void setApiKey(const std::string &key)
Sets API key for services that require authentication.
Definition CurrencyConverter.h:89
std::map< std::string, double > exchangeRate
Definition CurrencyConverter.h:18
std::string apiUrl
Definition CurrencyConverter.h:21
bool fetchRatesForCurrencies(const std::vector< std::string > ¤cies, const std::string &base="")
Fetches exchange rates for specific currencies.
Definition CurrencyConverter.cpp:72
void updateRate(const std::string ¤cy, double rate)
Definition CurrencyConverter.h:81
std::string baseCurrency
Definition CurrencyConverter.h:17
void fetchRatesFromAPIAsync(std::function< void(bool)> callback, const std::string &base="")
Definition CurrencyConverter.cpp:89