- Updated CurrencyController to enhance API responses for currency and gold rates.

- Added metadata to the responses, including timestamps and the time since the last update, improving data context for users.
- Enhanced method descriptions with relevant emojis for better readability and understanding.
- Refactored response handling to ensure consistent JSON structure across all rate retrieval methods.
- These changes improve the clarity and usability of the API, providing users with more informative responses.
This commit is contained in:
Ümit Tunç
2025-01-21 11:06:42 +03:00
parent 725fb50e03
commit 74d2e3e602
+63 -16
View File
@@ -15,7 +15,7 @@ use Illuminate\Support\Facades\Storage;
class CurrencyController extends Controller class CurrencyController extends Controller
{ {
/** /**
* Dispatches all jobs to fetch currency and gold rates synchronously. * ⚙️ Dispatches all jobs to fetch currency and gold rates synchronously.
* *
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
@@ -39,26 +39,41 @@ class CurrencyController extends Controller
} }
/** /**
* Retrieves all gold and currency rates * 🪙 💵 Retrieves all gold and currency rates
* *
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
public function getAllRates() public function getAllRates()
{ {
// JSON dosyasından oku // JSON dosyasından oku
$jsonFile = 'merged/rates.json'; $jsonFile = 'merged/rates.json';
if (Storage::exists($jsonFile)) { if (Storage::exists($jsonFile)) {
return response()->json( $data = json_decode(Storage::get($jsonFile), true);
json_decode(Storage::get($jsonFile), true) $currentDate = now(); // Şu anki tarih
); $updateDate = isset($data['Update_Date']) ? \Carbon\Carbon::parse($data['Update_Date']) : null;
if ($updateDate) {
$minutesAgo = round($currentDate->diffInMinutes($updateDate), 2); // Kaç dakika önce alındığı
$metaData = [ // Tarih bilgileri için alt dizi
'Minutes_Ago' => $minutesAgo,
'Current_Date' => $currentDate->toDateTimeString(),
'Update_Date' => $updateDate->toDateTimeString(), // Update_Date burada kalacak
];
unset($data['Update_Date']); // Rates içerisindeki Update_Date elemanını kaldır
$data = [
'Meta_Data' => $metaData, // Tarih bilgileri alt dizisi
'Rates' => $data, // Kur bilgileri alt dizisi
];
}
return response()->json($data);
} }
return response()->json(['error' => 'Veri bulunamadı'], 404); return response()->json(['error' => 'Veri bulunamadı'], 404);
} }
/** /**
* Retrieves the current currency rates * 💵 Retrieves the current currency rates
* *
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
@@ -67,16 +82,32 @@ class CurrencyController extends Controller
// JSON dosyasından oku // JSON dosyasından oku
$jsonFile = 'currency/today.json'; $jsonFile = 'currency/today.json';
if (Storage::exists($jsonFile)) { if (Storage::exists($jsonFile)) {
return response()->json( $data = json_decode(Storage::get($jsonFile), true);
json_decode(Storage::get($jsonFile), true) $currentDate = now(); // Şu anki tarih
); $updateDate = isset($data['Update_Date']) ? \Carbon\Carbon::parse($data['Update_Date']) : null;
if ($updateDate) {
$minutesAgo = round($currentDate->diffInMinutes($updateDate), 2); // Kaç dakika önce alındığı
$metaData = [ // Tarih bilgileri için alt dizi
'Minutes_Ago' => $minutesAgo,
'Current_Date' => $currentDate->toDateTimeString(),
'Update_Date' => $updateDate->toDateTimeString(), // Update_Date burada kalacak
];
unset($data['Update_Date']); // Rates içerisindeki Update_Date elemanını kaldır
$data = [
'Meta_Data' => $metaData, // Tarih bilgileri alt dizisi
'Rates' => $data, // Kur bilgileri alt dizisi
];
}
return response()->json($data);
} }
return response()->json(['error' => 'Veri bulunamadı'], 404); return response()->json(['error' => 'Veri bulunamadı'], 404);
} }
/** /**
* Retrieves the current gold rates * 🪙 Retrieves the current gold rates
* *
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
@@ -85,16 +116,32 @@ class CurrencyController extends Controller
// JSON dosyasından oku // JSON dosyasından oku
$jsonFile = 'gold/today.json'; $jsonFile = 'gold/today.json';
if (Storage::exists($jsonFile)) { if (Storage::exists($jsonFile)) {
return response()->json( $data = json_decode(Storage::get($jsonFile), true);
json_decode(Storage::get($jsonFile), true) $currentDate = now(); // Şu anki tarih
); $updateDate = isset($data['Update_Date']) ? \Carbon\Carbon::parse($data['Update_Date']) : null;
if ($updateDate) {
$minutesAgo = round($currentDate->diffInMinutes($updateDate), 2); // Kaç dakika önce alındığı
$metaData = [ // Tarih bilgileri için alt dizi
'Minutes_Ago' => $minutesAgo,
'Current_Date' => $currentDate->toDateTimeString(),
'Update_Date' => $updateDate->toDateTimeString(), // Update_Date burada kalacak
];
unset($data['Update_Date']); // Rates içerisindeki Update_Date elemanını kaldır
$data = [
'Meta_Data' => $metaData, // Tarih bilgileri alt dizisi
'Rates' => $data, // Kur bilgileri alt dizisi
];
}
return response()->json($data);
} }
return response()->json(['error' => 'Veri bulunamadı'], 404); return response()->json(['error' => 'Veri bulunamadı'], 404);
} }
/** /**
* Retrieves the currency rate by its name * 🟰 💵 Retrieves the currency rate by its name
* *
* @param string $currencyName * @param string $currencyName
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
@@ -115,7 +162,7 @@ class CurrencyController extends Controller
} }
/** /**
* Retrieves the gold rate by its name * 🟰 🪙 Retrieves the gold rate by its name
* *
* @param string $goldName * @param string $goldName
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse