mirror of
https://github.com/alexjustesen/speedtest-tracker.git
synced 2026-06-23 07:20:09 +00:00
[Feature] Add Ookla Server List to API (#2213)
This commit is contained in:
@@ -78,10 +78,12 @@ class ApiTokens extends Page implements HasForms, HasInfolists, HasTable
|
||||
->options([
|
||||
'results:read' => 'Read results',
|
||||
'speedtests:run' => 'Run speedtest',
|
||||
'ookla:list-servers' => 'List servers',
|
||||
])
|
||||
->descriptions([
|
||||
'results:read' => 'Allow this token to read results.',
|
||||
'speedtests:run' => 'Allow this token to run speedtests.',
|
||||
'ookla:list-servers' => 'Allow this token to list server.',
|
||||
])
|
||||
->bulkToggleable(),
|
||||
DateTimePicker::make('token_expires_at')
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1;
|
||||
|
||||
use App\Actions\GetOoklaSpeedtestServers;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use OpenApi\Attributes as OA;
|
||||
|
||||
class ListSpeedtestServers extends ApiController
|
||||
{
|
||||
#[OA\Get(
|
||||
path: '/api/v1/ookla/list-servers',
|
||||
description: 'Get a list of available Ookla speedtest servers.',
|
||||
responses: [
|
||||
new OA\Response(response: Response::HTTP_OK, description: 'OK'),
|
||||
new OA\Response(response: Response::HTTP_FORBIDDEN, description: 'Forbidden'),
|
||||
]
|
||||
)]
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ($request->user()->tokenCant('ookla:list-servers')) {
|
||||
return self::sendResponse(
|
||||
data: null,
|
||||
message: 'You do not have permission to view speedtest servers.',
|
||||
code: Response::HTTP_FORBIDDEN,
|
||||
);
|
||||
}
|
||||
|
||||
$servers = GetOoklaSpeedtestServers::run();
|
||||
|
||||
return self::sendResponse(
|
||||
data: $servers,
|
||||
message: 'Speedtest servers fetched successfully.'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Http\Controllers\Api\V1\LatestResult;
|
||||
use App\Http\Controllers\Api\V1\ListResults;
|
||||
use App\Http\Controllers\Api\V1\ListSpeedtestServers;
|
||||
use App\Http\Controllers\Api\V1\RunSpeedtest;
|
||||
use App\Http\Controllers\Api\V1\ShowResult;
|
||||
use App\Http\Controllers\Api\V1\Stats;
|
||||
@@ -20,6 +21,9 @@ Route::prefix('v1')->name('api.v1.')->group(function () {
|
||||
Route::post('/speedtests/run', RunSpeedtest::class)
|
||||
->name('speedtests.run');
|
||||
|
||||
Route::get('/ookla/list-servers', ListSpeedtestServers::class)
|
||||
->name('ookla.list-servers');
|
||||
|
||||
Route::get('/stats', Stats::class)
|
||||
->name('stats');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user