diff --git a/app/Http/Controllers/LodestoneLinkController.php b/app/Http/Controllers/LodestoneLinkController.php new file mode 100644 index 0000000..c9239e6 --- /dev/null +++ b/app/Http/Controllers/LodestoneLinkController.php @@ -0,0 +1,108 @@ +getCharacterByName($server, $name, $lodestoneApiService)->content; + + if (UserLink::where('lodestoneId', $character['Character']['ID'])->count() > 0) + return [ + 'linked' => true + ]; + + // TODO: Store this code in the LinkCode table + $code = $codeGeneratorService->generateCode( + 'discord', + $codeGeneratorService->generateIdentifierDiscordName($server, $name, $discordGuildId, $discordUserId) + ); + + return [ + 'linked' => false, + 'linkCode' => $code + ]; + } + + public function checkDiscordId( + int $lodestoneId, + int $discordGuildId, + int $discordUserId, + CodeGeneratorService $codeGeneratorService + ) { + if (UserLink::where('lodestoneId', $lodestoneId)->count() > 0) + return [ + 'linked' => true + ]; + + return [ + 'linked' => false, + 'linkCode' => $codeGeneratorService->generateCode( + 'discord', + $codeGeneratorService->generateIdentifierDiscordId($lodestoneId, $discordGuildId, $discordUserId) + ) + ]; + } + + public function checkWebsiteName( + string $server, + string $name, + string $hostname, + int $websiteUserId, + CodeGeneratorService $codeGeneratorService, + LodestoneCacheService $lodestoneCacheService, + LodestoneApiService $lodestoneApiService + ) { + $character = $lodestoneCacheService->getCharacterByName($server, $name, $lodestoneApiService)->content; + return [ + 'linked' => false, + 'linkCode' => $codeGeneratorService->generateCode( + 'discord', + $codeGeneratorService->generateIdentifierWebsiteName($server, $name, $hostname, $websiteUserId) + ) + ]; + } + + public function checkWebsiteId( + int $lodestoneId, + string $hostname, + int $websiteUserId, + CodeGeneratorService $codeGeneratorService, + LodestoneCacheService $lodestoneCacheService, + LodestoneApiService $lodestoneApiService + ) { + $character = $lodestoneCacheService->getCharacterById($lodestoneId, $lodestoneApiService)->content; + return [ + 'linked' => false, + 'linkCode' => $codeGeneratorService->generateCode( + 'discord', + $codeGeneratorService->generateIdentifierWebsiteId($lodestoneId, $hostname, $websiteUserId) + ) + ]; + } + + public function linkDiscord( + int $lodestoneId, + int $discordGuildId, + int $discordUserId + ) {} + + public function linkWebsite( + int $lodestoneId, + string $hostname, + int $websiteId + ) {} +} diff --git a/routes/web.php b/routes/web.php index bcfb2be..0b6f3b2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -17,13 +17,13 @@ Route::prefix('api')->group(function() { Route::prefix('v1')->group(function() { Route::prefix('lodestone')->group(function() { Route::prefix('link')->group(function() { - Route::get('/check/name/{server}/{name}/discord/{discordGuildId}/{discordUserId}'); - Route::get('/check/name/{server}/{name}/website/{hostname}/{websiteUserId}'); - Route::get('/check/id/{lodestoneId}/discord/{discordGuildId}/{discordUserId}'); - Route::get('/check/id/{lodestoneId}/website/{hostname}/{websiteId}'); + Route::get('/check/name/{server}/{name}/discord/{discordGuildId}/{discordUserId}', 'LodestoneLinkController@checkDiscordName'); + Route::get('/check/name/{server}/{name}/website/{hostname}/{websiteUserId}', 'LodestoneLinkController@checkWebsiteName'); + Route::get('/check/id/{lodestoneId}/discord/{discordGuildId}/{discordUserId}', 'LodestoneLinkController@checkDiscordId'); + Route::get('/check/id/{lodestoneId}/website/{hostname}/{websiteId}', 'LodestoneLinkController@checkWebsiteId'); - Route::post('/{lodestoneId}/discord/{discordGuildId}/{discordUserId}'); - Route::post('/{lodestoneId}/website/{hostname}/{websiteId}'); + Route::post('/{lodestoneId}/discord/{discordGuildId}/{discordUserId}', 'LodestoneLinkController@linkDiscord'); + Route::post('/{lodestoneId}/website/{hostname}/{websiteId}', 'LodestoneLinkController@linkWebsite'); }); Route::prefix('freeCompany')->group(function() {