diff --git a/app/Http/Controllers/LodestoneLinkController.php b/app/Http/Controllers/LodestoneLinkController.php index 40100df..a026007 100644 --- a/app/Http/Controllers/LodestoneLinkController.php +++ b/app/Http/Controllers/LodestoneLinkController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Services\LodestoneApiService; use App\Services\LodestoneCacheService; use App\Services\LodestoneLinkingService; +use Illuminate\Http\Request; class LodestoneLinkController extends Controller { @@ -59,14 +60,43 @@ class LodestoneLinkController extends Controller return $this->lodestoneLinkingService->getLinkWebsite($lodestoneId, $hostname, $websiteUserId); } - public function linkDiscord( - int $lodestoneId, - int $discordUserId - ) {} + public function linkDiscordName( + string $server, + string $name, + int $discordUserId, + Request $request + ) { + $lodestoneId = $this->lodestoneCacheService->getCharacterByName($server, $name, $this->lodestoneApiService)->lodestoneId; - public function linkWebsite( + return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->post('code')); + } + + public function linkDiscordId( + int $lodestoneId, + int $discordUserId, + Request $request + ) { + return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->post('code')); + } + + public function linkWebsiteName( + string $server, + string $name, + string $hostname, + int $websiteUserId, + Request $request + ) { + $lodestoneId = $this->lodestoneCacheService->getCharacterByName($server, $name, $this->lodestoneApiService)->lodestoneId; + + return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->post('code')); + } + + public function linkWebsiteId( int $lodestoneId, string $hostname, - int $websiteId - ) {} + int $websiteUserId, + Request $request + ) { + return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->post('code')); + } } diff --git a/app/Services/LodestoneLinkingService.php b/app/Services/LodestoneLinkingService.php index 9585595..2e44b22 100644 --- a/app/Services/LodestoneLinkingService.php +++ b/app/Services/LodestoneLinkingService.php @@ -95,4 +95,18 @@ class LodestoneLinkingService 'expires' => $linkCode->expires ]; } + + public function validateLinkDiscord($lodestoneId, int $discordUserId, string $code) + { + return [ + 'error' => 'Not yet implemented' + ]; + } + + public function validateLinkWebsite($lodestoneId, string $hostname, int $websiteUserId, string $code) + { + return [ + 'error' => 'Not yet implemented' + ]; + } } diff --git a/routes/web.php b/routes/web.php index 415d910..08e58e9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -25,8 +25,10 @@ Route::prefix('api')->middleware(ApiAuthorization::class)->group(function() { Route::get('/check/id/{lodestoneId}/discord/{discordUserId}', 'LodestoneLinkController@checkDiscordId'); Route::get('/check/id/{lodestoneId}/website/{hostname}/{websiteId}', 'LodestoneLinkController@checkWebsiteId'); - Route::post('/{lodestoneId}/discord/{discordUserId}', 'LodestoneLinkController@linkDiscord'); - Route::post('/{lodestoneId}/website/{hostname}/{websiteId}', 'LodestoneLinkController@linkWebsite'); + Route::post('/id/{lodestoneId}/discord/{discordUserId}', 'LodestoneLinkController@linkDiscordId'); + Route::post('/id/{lodestoneId}/website/{hostname}/{websiteId}', 'LodestoneLinkController@linkWebsiteId'); + Route::post('/name/{server}/{name}/discord/{discordUserId}', 'LodestoneLinkController@linkDiscordName'); + Route::post('/name/{server}/{name}/website/{hostname}/{websiteId}', 'LodestoneLinkController@linkWebsiteName'); }); Route::prefix('freeCompany')->group(function() { diff --git a/tests/Unit/LodestoneLinkTest.php b/tests/Feature/LodestoneLinkTest.php similarity index 60% rename from tests/Unit/LodestoneLinkTest.php rename to tests/Feature/LodestoneLinkTest.php index e0855b5..e73e93a 100644 --- a/tests/Unit/LodestoneLinkTest.php +++ b/tests/Feature/LodestoneLinkTest.php @@ -1,6 +1,6 @@ lodestoneLinkController = new LodestoneLinkController( - $lodestoneLinkingService, - $lodestoneCacheService, - $lodestoneApiService - ); - } - public function testGetLinkCodeByDiscordAndId() { LinkCode::where('lodestoneId', $this->lodestoneId)->delete(); - $response = $this->lodestoneLinkController->checkDiscordId($this->lodestoneId, $this->discordUserId); + $response = $this->get('/api/v1/lodestone/link/check/id/'.$this->lodestoneId.'/discord/'.$this->discordUserId); $this->assertDatabaseHas('link_codes', [ 'lodestoneId' => $this->lodestoneId, @@ -61,7 +40,7 @@ class LodestoneLinkTest extends TestCase { LinkCode::where('lodestoneId', $this->lodestoneId)->delete(); - $response = $this->lodestoneLinkController->checkDiscordName($this->server, $this->name, $this->discordUserId); + $response = $this->get('/api/v1/lodestone/link/check/name/'.$this->server.'/'.$this->name.'/discord/'.$this->discordUserId); $this->assertDatabaseHas('link_codes', [ 'lodestoneId' => $this->lodestoneId, @@ -73,7 +52,7 @@ class LodestoneLinkTest extends TestCase { LinkCode::where('lodestoneId', $this->lodestoneId)->delete(); - $response = $this->lodestoneLinkController->checkWebsiteId($this->lodestoneId, $this->websiteName, $this->websiteId); + $response = $this->get('/api/v1/lodestone/link/check/id/'.$this->lodestoneId.'/website/'.$this->websiteName.'/'.$this->websiteId); $this->assertDatabaseHas('link_codes', [ 'lodestoneId' => $this->lodestoneId, @@ -85,7 +64,7 @@ class LodestoneLinkTest extends TestCase { LinkCode::where('lodestoneId', $this->lodestoneId)->delete(); - $response = $this->lodestoneLinkController->checkWebsiteName($this->server, $this->name, $this->websiteName, $this->websiteId); + $response = $this->get('/api/v1/lodestone/link/check/name/'.$this->server.'/'.$this->name.'/website/'.$this->websiteName.'/'.$this->websiteId); $this->assertDatabaseHas('link_codes', [ 'lodestoneId' => $this->lodestoneId,