From 1002ee55e55a6321ce83b001389ab91fc7222cab Mon Sep 17 00:00:00 2001 From: Henry Whitaker Date: Wed, 8 Apr 2020 14:46:28 +0100 Subject: [PATCH] Added method to get speedtests in last x days --- app/Http/Controllers/SpeedtestController.php | 38 ++++++++++++++++++++ routes/api.php | 7 +++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/SpeedtestController.php b/app/Http/Controllers/SpeedtestController.php index 5fcdc3bc..40f11a66 100644 --- a/app/Http/Controllers/SpeedtestController.php +++ b/app/Http/Controllers/SpeedtestController.php @@ -4,11 +4,49 @@ namespace App\Http\Controllers; use App\Helpers\SpeedtestHelper; use App\Jobs\SpeedtestJob; +use App\Speedtest; +use Carbon\Carbon; use Exception; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Validator; class SpeedtestController extends Controller { + public function index() + { + $data = Speedtest::paginate(); + + return response()->json([ + 'method' => 'index of speedtests', + 'data' => $data, + ], 200); + } + + public function time($days) + { + $rule = [ + 'days' => [ 'required', 'integer' ], + ]; + + $validator = Validator::make([ 'days' => $days ], $rule); + + if($validator->fails()) { + return response()->json([ + 'method' => 'get speedtests in last x days', + 'error' => $validator->errors(), + ], 422); + } + + $data = Speedtest::where('created_at', '>=', Carbon::now()->subDays($days)) + ->get(); + + return response()->json([ + 'method' => 'get speedtests in last x days', + 'days' => $days, + 'data' => $data + ], 200); + } + public function latest() { $data = SpeedtestHelper::latest(); diff --git a/routes/api.php b/routes/api.php index 46b06890..ac9af5bd 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,5 +1,6 @@ [ 'api', 'session_active' ], 'prefix' => 'speedtest' ], function($router) { + Route::get('/', 'SpeedtestController@index') + ->name('speedtest.index'); Route::get('latest', 'SpeedtestController@latest') ->name('speedtest.latest'); + Route::get('time/{time}', 'SpeedtestController@time') + ->name('speedtest.time'); Route::get('run', 'SpeedtestController@run') ->name('speedtest.run') - ->middleware('throttle:2,1'); + ->middleware('throttle:5,1'); });