File tree Expand file tree Collapse file tree 3 files changed +43
-0
lines changed
Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -78,10 +78,12 @@ public function table(Table $table): Table
7878 ->options ([
7979 'results:read ' => 'Read results ' ,
8080 'speedtests:run ' => 'Run speedtest ' ,
81+ 'ookla:list-servers ' => 'List servers ' ,
8182 ])
8283 ->descriptions ([
8384 'results:read ' => 'Allow this token to read results. ' ,
8485 'speedtests:run ' => 'Allow this token to run speedtests. ' ,
86+ 'ookla:list-servers ' => 'Allow this token to list server. ' ,
8587 ])
8688 ->bulkToggleable (),
8789 DateTimePicker::make ('token_expires_at ' )
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace App \Http \Controllers \Api \V1 ;
4+
5+ use App \Actions \GetOoklaSpeedtestServers ;
6+ use Illuminate \Http \Request ;
7+ use Illuminate \Http \Response ;
8+ use OpenApi \Attributes as OA ;
9+
10+ class ListSpeedtestServers extends ApiController
11+ {
12+ #[OA \Get(
13+ path: '/api/v1/ookla/list-servers ' ,
14+ description: 'Get a list of available Ookla speedtest servers. ' ,
15+ responses: [
16+ new OA \Response (response: Response::HTTP_OK , description: 'OK ' ),
17+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: 'Forbidden ' ),
18+ ]
19+ )]
20+ public function __invoke (Request $ request )
21+ {
22+ if ($ request ->user ()->tokenCant ('ookla:list-servers ' )) {
23+ return self ::sendResponse (
24+ data: null ,
25+ message: 'You do not have permission to view speedtest servers. ' ,
26+ code: Response::HTTP_FORBIDDEN ,
27+ );
28+ }
29+
30+ $ servers = GetOoklaSpeedtestServers::run ();
31+
32+ return self ::sendResponse (
33+ data: $ servers ,
34+ message: 'Speedtest servers fetched successfully. '
35+ );
36+ }
37+ }
Original file line number Diff line number Diff line change 22
33use App \Http \Controllers \Api \V1 \LatestResult ;
44use App \Http \Controllers \Api \V1 \ListResults ;
5+ use App \Http \Controllers \Api \V1 \ListSpeedtestServers ;
56use App \Http \Controllers \Api \V1 \RunSpeedtest ;
67use App \Http \Controllers \Api \V1 \ShowResult ;
78use App \Http \Controllers \Api \V1 \Stats ;
2021 Route::post ('/speedtests/run ' , RunSpeedtest::class)
2122 ->name ('speedtests.run ' );
2223
24+ Route::get ('/ookla/list-servers ' , ListSpeedtestServers::class)
25+ ->name ('ookla.list-servers ' );
26+
2327 Route::get ('/stats ' , Stats::class)
2428 ->name ('stats ' );
2529});
You can’t perform that action at this time.
0 commit comments