- 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
{
/**
* Dispatches all jobs to fetch currency and gold rates synchronously.
* ⚙️ Dispatches all jobs to fetch currency and gold rates synchronously.
*
* @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
*/
public function getAllRates()
{
// JSON dosyasından oku
$jsonFile = 'merged/rates.json';
if (Storage::exists($jsonFile)) {
return response()->json(
json_decode(Storage::get($jsonFile), true)
);
$data = 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);
}
/**
* Retrieves the current currency rates
* 💵 Retrieves the current currency rates
*
* @return \Illuminate\Http\JsonResponse
*/
@@ -67,16 +82,32 @@ class CurrencyController extends Controller
// JSON dosyasından oku
$jsonFile = 'currency/today.json';
if (Storage::exists($jsonFile)) {
return response()->json(
json_decode(Storage::get($jsonFile), true)
);
$data = 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);
}
/**
* Retrieves the current gold rates
* 🪙 Retrieves the current gold rates
*
* @return \Illuminate\Http\JsonResponse
*/
@@ -85,16 +116,32 @@ class CurrencyController extends Controller
// JSON dosyasından oku
$jsonFile = 'gold/today.json';
if (Storage::exists($jsonFile)) {
return response()->json(
json_decode(Storage::get($jsonFile), true)
);
$data = 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);
}
/**
* Retrieves the currency rate by its name
* 🟰 💵 Retrieves the currency rate by its name
*
* @param string $currencyName
* @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
* @return \Illuminate\Http\JsonResponse