12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
-
- namespace App\Services;
-
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\Http;
-
- class CurrencyService
- {
- public function getExchangeRate($from, $to)
- {
- $req_url = 'https://api.exchangerate.host/latest?base=' . $from . '&symbols=' . $to;
-
- $response = Http::get($req_url);
-
- if ($response->successful()) {
- $responseData = $response->json();
- if (isset($responseData['rates'][$to])) {
- return $responseData['rates'][$to];
- }
- }
-
- return null;
- }
-
- public function getCachedExchangeRate(string $defaultCurrencyCode, string $code): ?float
- {
- $cacheKey = 'currency_data_' . $defaultCurrencyCode . '_' . $code;
-
- $cachedData = Cache::get($cacheKey);
-
- if ($cachedData !== null) {
- return $cachedData['rate'];
- }
-
- $rate = $this->getExchangeRate($defaultCurrencyCode, $code);
-
- if ($rate !== null) {
- $dataToCache = compact('rate');
- $expirationTimeInSeconds = 60 * 60 * 24; // 24 hours
- Cache::put($cacheKey, $dataToCache, $expirationTimeInSeconds);
- }
-
- return $rate;
- }
- }
|