feat: add apilayer as provider for fixer api (#127)
feat: add apilayer as provider for fixer api feat: update exchange rate when saving api key
This commit is contained in:
@@ -5,16 +5,32 @@
|
||||
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
$newApiKey = isset($_POST["api_key"]) ? $_POST["api_key"] : "";
|
||||
$provider = isset($_POST["provider"]) ? $_POST["provider"] : 0;
|
||||
|
||||
$removeOldKey = "DELETE FROM fixer";
|
||||
$db->exec($removeOldKey);
|
||||
$testKeyUrl = "http://data.fixer.io/api/latest?access_key=$newApiKey";
|
||||
$response = file_get_contents($testKeyUrl);
|
||||
|
||||
if ($provider == 1) {
|
||||
$testKeyUrl = "https://api.apilayer.com/fixer/latest?base=USD&symbols=EUR";
|
||||
$context = stream_context_create([
|
||||
'http' => [
|
||||
'method' => 'GET',
|
||||
'header' => 'apikey: ' . $newApiKey,
|
||||
]
|
||||
]);
|
||||
$response = file_get_contents($testKeyUrl, false, $context);
|
||||
} else {
|
||||
$testKeyUrl = "http://data.fixer.io/api/latest?access_key=$newApiKey";
|
||||
$response = file_get_contents($testKeyUrl);
|
||||
}
|
||||
|
||||
$apiData = json_decode($response, true);
|
||||
if ($apiData['success'] && $apiData['success'] == 1) {
|
||||
if (!empty($newApiKey)) {
|
||||
$insertNewKey = "INSERT INTO fixer (api_key) VALUES (:api_key)";
|
||||
$insertNewKey = "INSERT INTO fixer (api_key, provider) VALUES (:api_key, :provider)";
|
||||
$stmt = $db->prepare($insertNewKey);
|
||||
$stmt->bindParam(":api_key", $newApiKey, SQLITE3_TEXT);
|
||||
$stmt->bindParam(":provider", $provider, SQLITE3_INTEGER);
|
||||
$result = $stmt->execute();
|
||||
if ($result) {
|
||||
echo json_encode(["success" => true, "message" => translate('api_key_saved', $i18n)]);
|
||||
|
||||
@@ -2,23 +2,28 @@
|
||||
require_once '../../includes/connect_endpoint.php';
|
||||
|
||||
$shouldUpdate = true;
|
||||
$query = "SELECT date FROM last_exchange_update";
|
||||
$result = $db->querySingle($query);
|
||||
|
||||
if ($result) {
|
||||
$lastUpdateDate = new DateTime($result);
|
||||
$currentDate = new DateTime();
|
||||
$lastUpdateDateString = $lastUpdateDate->format('Y-m-d');
|
||||
$currentDateString = $currentDate->format('Y-m-d');
|
||||
$shouldUpdate = $lastUpdateDateString < $currentDateString;
|
||||
if (isset($_GET['force']) && $_GET['force'] === "true") {
|
||||
$shouldUpdate = true;
|
||||
} else {
|
||||
$query = "SELECT date FROM last_exchange_update";
|
||||
$result = $db->querySingle($query);
|
||||
|
||||
if ($result) {
|
||||
$lastUpdateDate = new DateTime($result);
|
||||
$currentDate = new DateTime();
|
||||
$lastUpdateDateString = $lastUpdateDate->format('Y-m-d');
|
||||
$currentDateString = $currentDate->format('Y-m-d');
|
||||
$shouldUpdate = $lastUpdateDateString < $currentDateString;
|
||||
}
|
||||
|
||||
if (!$shouldUpdate) {
|
||||
echo "Rates are current, no need to update.";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$shouldUpdate) {
|
||||
echo "Rates are current, no need to update.";
|
||||
exit;
|
||||
}
|
||||
|
||||
$query = "SELECT api_key FROM fixer";
|
||||
$query = "SELECT api_key, provider FROM fixer";
|
||||
$result = $db->query($query);
|
||||
|
||||
if ($result) {
|
||||
@@ -26,6 +31,7 @@ if ($result) {
|
||||
|
||||
if ($row) {
|
||||
$apiKey = $row['api_key'];
|
||||
$provider = $row['provider'];
|
||||
|
||||
$codes = "";
|
||||
$query = "SELECT id, name, symbol, code FROM currencies";
|
||||
@@ -41,8 +47,20 @@ if ($result) {
|
||||
$mainCurrencyCode = $row['code'];
|
||||
$mainCurrencyId = $row['main_currency'];
|
||||
|
||||
$api_url = "http://data.fixer.io/api/latest?access_key=". $apiKey . "&base=EUR&symbols=" . $codes;
|
||||
$response = file_get_contents($api_url);
|
||||
if ($provider === 1) {
|
||||
$api_url = "https://api.apilayer.com/fixer/latest?base=EUR&symbols=" . $codes;
|
||||
$context = stream_context_create([
|
||||
'http' => [
|
||||
'method' => 'GET',
|
||||
'header' => 'apikey: ' . $apiKey,
|
||||
]
|
||||
]);
|
||||
$response = file_get_contents($api_url, false, $context);
|
||||
} else {
|
||||
$api_url = "http://data.fixer.io/api/latest?access_key=". $apiKey . "&base=EUR&symbols=" . $codes;
|
||||
$response = file_get_contents($api_url);
|
||||
}
|
||||
|
||||
$apiData = json_decode($response, true);
|
||||
|
||||
$mainCurrencyToEUR = $apiData['rates'][$mainCurrencyCode];
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
session_start();
|
||||
|
||||
function update_exchange_rate($db) {
|
||||
$query = "SELECT api_key FROM fixer";
|
||||
$query = "SELECT api_key, provider FROM fixer";
|
||||
$result = $db->query($query);
|
||||
|
||||
if ($result) {
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
if ($row) {
|
||||
$apiKey = $row['api_key'];
|
||||
$provider = $row['provider'];
|
||||
|
||||
$codes = "";
|
||||
$query = "SELECT id, name, symbol, code FROM currencies";
|
||||
@@ -29,8 +30,20 @@
|
||||
$mainCurrencyCode = $row['code'];
|
||||
$mainCurrencyId = $row['main_currency'];
|
||||
|
||||
$api_url = "http://data.fixer.io/api/latest?access_key=". $apiKey . "&base=EUR&symbols=" . $codes;
|
||||
$response = file_get_contents($api_url);
|
||||
if ($provider === 1) {
|
||||
$api_url = "https://api.apilayer.com/fixer/latest?base=EUR&symbols=" . $codes;
|
||||
$context = stream_context_create([
|
||||
'http' => [
|
||||
'method' => 'GET',
|
||||
'header' => 'apikey: ' . $apiKey,
|
||||
]
|
||||
]);
|
||||
$response = file_get_contents($api_url, false, $context);
|
||||
} else {
|
||||
$api_url = "http://data.fixer.io/api/latest?access_key=". $apiKey . "&base=EUR&symbols=" . $codes;
|
||||
$response = file_get_contents($api_url);
|
||||
}
|
||||
|
||||
$apiData = json_decode($response, true);
|
||||
|
||||
$mainCurrencyToEUR = $apiData['rates'][$mainCurrencyCode];
|
||||
@@ -125,9 +138,9 @@
|
||||
if ($result) {
|
||||
$cookieExpire = time() + (30 * 24 * 60 * 60);
|
||||
$oldLanguage = isset($_COOKIE['language']) ? $_COOKIE['language'] : "en";
|
||||
$root = str_replace('/endpoints/user', '', dirname($_SERVER['PHP_SELF']));
|
||||
$root = $root == '' ? '/' : $root;
|
||||
setcookie('language', $language, $cookieExpire, $root);
|
||||
$root = str_replace('/endpoints/user', '', dirname($_SERVER['PHP_SELF']));
|
||||
$root = $root == '' ? '/' : $root;
|
||||
setcookie('language', $language, $cookieExpire, $root);
|
||||
if ($username != $oldUsername) {
|
||||
$_SESSION['username'] = $username;
|
||||
if (isset($_COOKIE['wallos_login'])) {
|
||||
@@ -168,4 +181,4 @@
|
||||
echo json_encode($response);
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user