Implement multi-currency support with MsgPack

This commit is contained in:
Djuri 2024-09-05 14:00:15 +02:00
parent a4ff5a2f75
commit c276d32807
18 changed files with 528 additions and 541 deletions

View file

@ -32,25 +32,41 @@ std::string getCurrencyCode(char input)
switch (input)
{
case CURRENCY_EUR:
return "EUR";
return CURRENCY_CODE_EUR;
break;
case CURRENCY_GBP:
return "GBP";
return CURRENCY_CODE_GBP;
break;
case CURRENCY_JPY:
return "YEN";
return CURRENCY_CODE_JPY;
break;
case CURRENCY_AUD:
return "AUD";
return CURRENCY_CODE_AUD;
break;
case CURRENCY_CAD:
return "CAD";
return CURRENCY_CODE_CAD;
break;
default:
return "USD";
return CURRENCY_CODE_USD;
}
}
char getCurrencyChar(const std::string& input)
{
if (input == "EUR")
return CURRENCY_EUR;
else if (input == "GBP")
return CURRENCY_GBP;
else if (input == "JPY")
return CURRENCY_JPY;
else if (input == "AUD")
return CURRENCY_AUD;
else if (input == "CAD")
return CURRENCY_CAD;
else
return CURRENCY_USD; // Assuming USD is the default for unknown inputs
}
std::array<std::string, NUM_SCREENS> parsePriceData(std::uint32_t price, char currencySymbol, bool useSuffixFormat)
{
std::array<std::string, NUM_SCREENS> ret;
@ -205,14 +221,8 @@ std::array<std::string, NUM_SCREENS> parseMarketCap(std::uint32_t blockHeight, s
std::uint32_t firstIndex = 0;
double supply = getSupplyAtBlock(blockHeight);
int64_t marketCap = static_cast<std::int64_t>(supply * double(price));
if (currencySymbol == '[')
{
ret[0] = "EUR/MCAP";
}
else
{
ret[0] = "USD/MCAP";
}
ret[0] = getCurrencyCode(currencySymbol) + "/MCAP";
if (bigChars)
{

View file

@ -12,6 +12,13 @@ const char CURRENCY_JPY = '^';
const char CURRENCY_AUD = '_';
const char CURRENCY_CAD = '`';
const std::string CURRENCY_CODE_USD = "USD";
const std::string CURRENCY_CODE_EUR = "EUR";
const std::string CURRENCY_CODE_GBP = "GBP";
const std::string CURRENCY_CODE_JPY = "JPY";
const std::string CURRENCY_CODE_AUD = "AUD";
const std::string CURRENCY_CODE_CAD = "CAD";
std::array<std::string, NUM_SCREENS> parsePriceData(std::uint32_t price, char currency, bool useSuffixFormat = false);
std::array<std::string, NUM_SCREENS> parseSatsPerCurrency(std::uint32_t price, char currencySymbol, bool withSatsSymbol);
std::array<std::string, NUM_SCREENS> parseBlockHeight(std::uint32_t blockHeight);
@ -20,4 +27,5 @@ std::array<std::string, NUM_SCREENS> parseMarketCap(std::uint32_t blockHeight, s
std::array<std::string, NUM_SCREENS> parseBlockFees(std::uint16_t blockFees);
char getCurrencySymbol(char input);
std::string getCurrencyCode(char input);
std::string getCurrencyCode(char input);
char getCurrencyChar(const std::string& input);