Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
// Osman Zakir
// 4 / 4 / 2018
// currency_converter_app main.cpp
// This is a currency converter web application written in Wt. The GUI is a Google Map with an info window that displays a form
// The form takes the user's input for what currencies to convert to and from, respectively, and the amount to convert. The form submits
// to the executable made by this C++ code file
#include <Wt/WApplication.h>
#include <Wt/WServer.h>
#include <Wt/Http/Client.h>
#include <Wt/Http/Request.h>
#include <Wt/Http/Response.h>
#include <Wt/Json/Serializer.h>
#include <Wt/Json/Parser.h>
#include <Wt/Json/Array.h>
#include <Wt/Json/Object.h>
#include <Wt/Json/Value.h>
#include <Wt/WString.h>
#include <Wt/WEnvironment.h>
#include <Wt/WTemplate.h>
#include <Wt/WContainerWidget.h>
#include <Wt/WJavaScript.h>
#include <Wt/Utils.h>
class CurrencyConverterApp : public Wt::WApplication
CurrencyConverterApp(const Wt::WEnvironment &env);
double convert(const double amount, const std::string &to_currency);
int main(int argc, char *argv[])
return Wt::WRun(argc, argv, [](const Wt::WEnvironment &env) {
return std::make_unique<CurrencyConverterApp>(env);
CurrencyConverterApp::CurrencyConverterApp(const Wt::WEnvironment &env)
: Wt::WApplication{ env }
std::string key;
bool api_key = readConfigurationProperty("google_api_key", key);
std::string urlencode_key = Wt::Utils::urlEncode(key);
auto t = root()->addNew<Wt::WTemplate>();
"<div id=\"map\"></div>"
"<script src=\"resources/scripts.js\" type=\"text/javascript\"></script>"
"<script async defer src=\"${urlencode_key}&callback=initMap\"></script>",
t->bindString("urlencode_key", urlencode_key);
setTitle("DragonOsman Currency Converter");
double CurrencyConverterApp::convert(const double amount, const std::string &to_currency)
// TODO: Try to match passed in to_currency with array of supported currencies
// and do the conversion for the currency that checks out. Return the result.
return 0.0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment