summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorDaniel Weipert <code@drogueronin.de>2023-08-22 15:01:03 +0200
committerDaniel Weipert <code@drogueronin.de>2023-08-22 15:01:03 +0200
commitc0354b250f84d578b609a7f25d71dee7fc24e9ca (patch)
treeaf586e0a4c44a2f2c8df956ca3b992be15daaba3 /db
parent54e5ffaeb79f989463c144e58dfcd677b752c5a9 (diff)
currency, save/load
Diffstat (limited to 'db')
-rw-r--r--db/_generated/currencies.json1
-rw-r--r--db/currencies/currencies.php42
2 files changed, 43 insertions, 0 deletions
diff --git a/db/_generated/currencies.json b/db/_generated/currencies.json
new file mode 100644
index 0000000..d3dc796
--- /dev/null
+++ b/db/_generated/currencies.json
@@ -0,0 +1 @@
+{"last_updated":"2023-08-21","map":{"AUD":{"rate":1.6995,"symbol":"$","name":"Australian Dollar","decimals":2},"BGN":{"rate":1.9558,"symbol":"\u043b\u0432","name":"Bulgarian Lev","decimals":2},"BRL":{"rate":5.414,"symbol":"R$","name":"Brazilian Real","decimals":2},"CAD":{"rate":1.4723,"symbol":"$","name":"Canadian Dollar","decimals":2},"CHF":{"rate":0.9588,"symbol":"CHF","name":"Swiss Franc","decimals":2},"CNY":{"rate":7.9456,"symbol":"\u00a5","name":"Chinese Yuan","decimals":2},"CZK":{"rate":24.02,"symbol":"K\u010d","name":"Czech Republic Koruna","decimals":2},"DKK":{"rate":7.4524,"symbol":"kr","name":"Danish Krone","decimals":2},"GBP":{"rate":0.85475,"symbol":"\u00a3","name":"British Pound Sterling","decimals":2},"HKD":{"rate":8.5488,"symbol":"$","name":"Hong Kong Dollar","decimals":2},"HUF":{"rate":381.73,"symbol":"Ft","name":"Hungarian Forint","decimals":2},"IDR":{"rate":16718,"symbol":"Rp","name":"Indonesian Rupiah","decimals":2},"ILS":{"rate":4.1395,"symbol":"\u20aa","name":"Israeli New Sheqel","decimals":2},"INR":{"rate":90.66,"symbol":"\u20b9","name":"Indian Rupee","decimals":2},"ISK":{"rate":143.7,"symbol":"kr","name":"Icelandic Kr\u00f3na","decimals":2},"JPY":{"rate":159.15,"symbol":"\u00a5","name":"Japanese Yen","decimals":0},"KRW":{"rate":1460.32,"symbol":"\u20a9","name":"South Korean Won","decimals":2},"MXN":{"rate":18.5927,"symbol":"$","name":"Mexican Peso","decimals":2},"MYR":{"rate":5.0706,"symbol":"RM","name":"Malaysian Ringgit","decimals":2},"NOK":{"rate":11.5205,"symbol":"kr","name":"Norwegian Krone","decimals":2},"NZD":{"rate":1.8407,"symbol":"$","name":"New Zealand Dollar","decimals":2},"PHP":{"rate":61.543,"symbol":"\u20b1","name":"Philippine Peso","decimals":2},"PLN":{"rate":4.4785,"symbol":"z\u0142","name":"Polish Zloty","decimals":2},"RON":{"rate":4.9406,"symbol":"lei","name":"Romanian Leu","decimals":2},"SEK":{"rate":11.9095,"symbol":"kr","name":"Swedish Krona","decimals":2},"SGD":{"rate":1.4791,"symbol":"S$","name":"Singapore Dollar","decimals":2},"THB":{"rate":38.314,"symbol":"\u0e3f","name":"Thai Baht","decimals":2},"TRY":{"rate":29.63,"symbol":"\u20ba","name":"Turkish Lira","decimals":2},"USD":{"rate":1.0908,"symbol":"$","name":"United States Dollar","decimals":2},"ZAR":{"rate":20.676,"symbol":"R","name":"South African Rand","decimals":2},"EUR":{"rate":1,"symbol":"\u20ac","name":"Euro","decimals":2}}} \ No newline at end of file
diff --git a/db/currencies/currencies.php b/db/currencies/currencies.php
new file mode 100644
index 0000000..7c8b2ac
--- /dev/null
+++ b/db/currencies/currencies.php
@@ -0,0 +1,42 @@
+<?php
+
+$currencySymbols = [];
+$handle = fopen('https://raw.githubusercontent.com/bengourley/currency-symbol-map/master/map.js', 'r');
+while ($line = fgets($handle)) {
+ preg_match("/(\w+): '(.+)'/", $line, $match);
+
+ if (isset($match[1])) {
+ $currencySymbols[$match[1]] = $match[2];
+ }
+}
+
+$currencyNames = json_decode(file_get_contents('https://openexchangerates.org/api/currencies.json'), true);
+
+$decimals = [
+ 'JPY' => 0,
+];
+
+$currencies = [];
+$apiResponse = json_decode(file_get_contents('https://api.frankfurter.app/latest?base=eur'), true);
+$currencies['last_updated'] = $apiResponse['date'];
+foreach ($apiResponse['rates'] as $code => $rate) {
+ $currencies['map'][$code] = [
+ 'rate' => $rate,
+ 'symbol' => $currencySymbols[$code],
+ 'name' => $currencyNames[$code],
+ 'decimals' => $decimals[$code] ?? 2,
+ ];
+}
+
+// add EUR
+$currencies['map']['EUR'] = [
+ 'rate' => 1,
+ 'symbol' => $currencySymbols['EUR'],
+ 'name' => $currencyNames['EUR'],
+ 'decimals' => 2,
+];
+
+file_put_contents(
+ dirname(__DIR__) . '/_generated/currencies.json',
+ json_encode($currencies)
+);