Skip to content

Commit

Permalink
#1904 Added dungeon endpoint for API
Browse files Browse the repository at this point in the history
  • Loading branch information
Wotuu committed Jul 31, 2023
1 parent 9cb600d commit 90d04c1
Show file tree
Hide file tree
Showing 30 changed files with 209 additions and 110 deletions.
Expand Up @@ -18,7 +18,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APIBrushlineController extends Controller
class AjaxBrushlineController extends Controller
{
use SavesPolylines;

Expand Down
Expand Up @@ -15,7 +15,7 @@
use Teapot\StatusCode\Http;
use Throwable;

class APIDungeonFloorSwitchMarkerController extends APIMappingModelBaseController
class AjaxDungeonFloorSwitchMarkerController extends AjaxMappingModelBaseController
{
use ListsDungeonFloorSwitchMarkers;

Expand Down
Expand Up @@ -6,7 +6,7 @@
use App\Models\DungeonRoute;
use Illuminate\Http\Request;

class APIEchoController extends Controller
class AjaxEchoController extends Controller
{
public function members(Request $request, DungeonRoute $dungeonRoute)
{
Expand Down
Expand Up @@ -22,7 +22,7 @@
use Teapot\StatusCode\Http;
use Throwable;

class APIEnemyController extends APIMappingModelBaseController
class AjaxEnemyController extends AjaxMappingModelBaseController
{
use PublicKeyDungeonRoute;

Expand Down
Expand Up @@ -13,7 +13,7 @@
use Illuminate\Support\Facades\Auth;
use Throwable;

class APIEnemyPackController extends APIMappingModelBaseController
class AjaxEnemyPackController extends AjaxMappingModelBaseController
{
/**
* @param EnemyPackFormRequest $request
Expand Down
Expand Up @@ -16,7 +16,7 @@
use Teapot\StatusCode\Http;
use Throwable;

class APIEnemyPatrolController extends APIMappingModelBaseController
class AjaxEnemyPatrolController extends AjaxMappingModelBaseController
{
use SavesPolylines;

Expand Down
Expand Up @@ -24,7 +24,7 @@
use Mockery\Exception;
use Teapot\StatusCode\Http;

class APIKillZoneController extends Controller
class AjaxKillZoneController extends Controller
{
/**
* @param DungeonRoute $dungeonroute
Expand Down
Expand Up @@ -13,7 +13,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APILiveSessionController extends Controller
class AjaxLiveSessionController extends Controller
{
/**
* @param Request $request
Expand Down
Expand Up @@ -21,7 +21,7 @@
use Teapot\StatusCode\Http;
use Throwable;

class APIMapIconController extends APIMappingModelBaseController
class AjaxMapIconController extends AjaxMappingModelBaseController
{
use PublicKeyDungeonRoute;

Expand Down
Expand Up @@ -20,7 +20,7 @@
* @author Wouter
* @since 06/11/2022
*/
abstract class APIMappingModelBaseController extends Controller
abstract class AjaxMappingModelBaseController extends Controller
{
use ChangesMapping;

Expand Down
Expand Up @@ -6,7 +6,7 @@
use App\Http\Requests\MappingVersion\APIMappingVersionFormRequest;
use App\Models\Mapping\MappingVersion;

class APIMappingVersionController extends Controller
class AjaxMappingVersionController extends Controller
{
/**
* @param APIMappingVersionFormRequest $request
Expand Down
Expand Up @@ -10,7 +10,7 @@
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\Response;

class APIMetricController extends Controller
class AjaxMetricController extends Controller
{
/**
* @param APIMetricFormRequest $request
Expand Down
Expand Up @@ -16,7 +16,7 @@
use Teapot\StatusCode\Http;
use Throwable;

class APIMountableAreaController extends APIMappingModelBaseController
class AjaxMountableAreaController extends AjaxMappingModelBaseController
{
use ChangesMapping;

Expand Down
Expand Up @@ -14,7 +14,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APINpcController extends Controller
class AjaxNpcController extends Controller
{
use ChangesMapping;

Expand Down
Expand Up @@ -19,7 +19,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APIOverpulledEnemyController extends Controller
class AjaxOverpulledEnemyController extends Controller
{
/**
* @param OverpulledEnemyServiceInterface $overpulledEnemyService
Expand Down
Expand Up @@ -18,7 +18,7 @@
use Mockery\Exception;
use Teapot\StatusCode\Http;

class APIPathController extends Controller
class AjaxPathController extends Controller
{
use SavesPolylines;

Expand Down
Expand Up @@ -16,7 +16,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APIPridefulEnemyController extends Controller
class AjaxPridefulEnemyController extends Controller
{
/**
* @param Request $request
Expand Down
Expand Up @@ -7,7 +7,7 @@
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;

class APIProfileController
class AjaxProfileController
{
/**
* @param Request $request
Expand Down
Expand Up @@ -6,7 +6,7 @@
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class APISiteController extends Controller
class AjaxSiteController extends Controller
{
/**
* @param Request $request
Expand Down
Expand Up @@ -22,7 +22,7 @@
use Teapot\StatusCode;
use Teapot\StatusCode\Http;

class APITagController extends Controller
class AjaxTagController extends Controller
{
/**
* @param Request $request
Expand Down
Expand Up @@ -19,7 +19,7 @@
use Illuminate\Support\Facades\Auth;
use Teapot\StatusCode\Http;

class APITeamController extends Controller
class AjaxTeamController extends Controller
{
function list(Request $request)
{
Expand Down
Expand Up @@ -7,7 +7,7 @@
use App\User;
use Illuminate\Http\Request;

class APIUserController
class AjaxUserController
{
/**
* @param Request $request
Expand Down
Expand Up @@ -13,7 +13,7 @@
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;

class APIUserReportController
class AjaxUserReportController
{
/**
* @param Request $request
Expand Down
22 changes: 22 additions & 0 deletions app/Http/Controllers/Api/V1/APIDungeonController.php
@@ -0,0 +1,22 @@
<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Http\Resources\Dungeon\DungeonCollectionResource;
use App\Models\Dungeon;
use Request;

class APIDungeonController extends Controller
{
/**
* @param Request $request
* @return DungeonCollectionResource
*/
public function list(Request $request): DungeonCollectionResource
{
return new DungeonCollectionResource(
Dungeon::active()->paginate(50)
);
}
}
3 changes: 2 additions & 1 deletion app/Http/Controllers/Api/V1/APIDungeonRouteController.php
Expand Up @@ -2,12 +2,13 @@

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Http\Resources\DungeonRoute\DungeonRouteCollectionResource;
use App\Models\DungeonRoute;
use Auth;
use Request;

class APIDungeonRouteController
class APIDungeonRouteController extends Controller
{
/**
* @param Request $request
Expand Down
35 changes: 35 additions & 0 deletions app/Http/Resources/Dungeon/DungeonCollectionResource.php
@@ -0,0 +1,35 @@
<?php

namespace App\Http\Resources\Dungeon;

use App\Http\Resources\DungeonRoute\DungeonRouteResource;
use App\Models\Dungeon;
use App\Models\DungeonRoute;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;
use JsonSerializable;

/**
* Class DungeonCollectionResource
*
* @package App\Http\Resources
* @author Wouter
* @since 31/07/2023
*/
class DungeonCollectionResource extends ResourceCollection
{
/**
* Transform the resource into an array.
*
* @param Request $request
*
* @return array|Arrayable|JsonSerializable
*/
public function toArray($request)
{
return ['data' => $this->collection->map(function(Dungeon $dungeon){
return new DungeonResource($dungeon);
})];
}
}
34 changes: 34 additions & 0 deletions app/Http/Resources/Dungeon/DungeonResource.php
@@ -0,0 +1,34 @@
<?php

namespace App\Http\Resources\Dungeon;

use App\Models\Dungeon;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use JsonSerializable;

/**
* @mixin Dungeon
*/
class DungeonResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param Request $request
*
* @return array|Arrayable|JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'expansion_id' => $this->expansion_id,
'name' => __($this->name, [], 'en'),
'slug' => $this->slug,
'key' => $this->key,
'speedrun_enabled' => $this->speedrun_enabled,
];
}
}
2 changes: 1 addition & 1 deletion app/Http/Resources/DungeonRoute/DungeonRouteResource.php
Expand Up @@ -37,9 +37,9 @@ public function toArray($request)
$dungeonRouteUrlParams = ['dungeon' => $this->dungeon, 'dungeonroute' => $this, 'title' => $this->getTitleSlug()];

return [
'dungeon_id' => $this->dungeon_id,
'public_key' => $this->public_key,
'title' => $this->title,
'dungeon' => $this->dungeon->slug,
'pulls' => $this->killZones->count(),
'enemy_forces' => $this->enemy_forces,
'enemy_forces_required' => $this->dungeon->getCurrentMappingVersion()->enemy_forces_required,
Expand Down
7 changes: 7 additions & 0 deletions routes/api.php
@@ -1,6 +1,7 @@
<?php

use App\Http\Controllers\Api\V1\APICombatLogController;
use App\Http\Controllers\Api\V1\APIDungeonController;
use App\Http\Controllers\Api\V1\APIDungeonRouteController;

/*
Expand All @@ -17,7 +18,13 @@
Route::group(['prefix' => 'combatlog'], function () {
Route::post('route', [APICombatLogController::class, 'createRoute'])->name('api.v1.combatlog.route.create');
});

Route::group(['prefix' => 'route'], function () {
Route::get('/', [APIDungeonRouteController::class, 'list'])->name('api.v1.combatlog.route.list');
});

// Static data
Route::group(['prefix' => 'dungeon'], function () {
Route::get('/', [APIDungeonController::class, 'list'])->name('api.v1.combatlog.dungeon.list');
});
});

0 comments on commit 90d04c1

Please sign in to comment.