11package net .cryptic_game .backend .server .server .http ;
22
33import io .netty .handler .codec .http .HttpResponseStatus ;
4- import lombok .RequiredArgsConstructor ;
54import net .cryptic_game .backend .base .api .annotations .ApiEndpoint ;
65import net .cryptic_game .backend .base .api .annotations .ApiEndpointCollection ;
76import net .cryptic_game .backend .base .api .annotations .ApiParameter ;
2120
2221import java .security .Key ;
2322import java .time .OffsetDateTime ;
23+ import java .util .List ;
2424import java .util .Optional ;
2525
26- @ RequiredArgsConstructor
2726@ ApiEndpointCollection (id = "oauth2" , type = ApiType .REST )
2827public final class HttpOauth2Endpoints {
2928
3029 private final Key key ;
31- private final OAuth2Config oAuth2Config ;
3230 private final OAuth2Provider oAuth2Provider ;
3331 private final UserRepository userRepository ;
3432 private final UserOAuthProviderIdRepository userOAuthProviderIdRepository ;
33+ private final ApiResponse apiResponse ;
3534
36- @ ApiEndpoint (id = "info" )
37- public ApiResponse providerInfo (@ ApiParameter (id = "provider" ) final String provider ) {
38- switch (provider ) {
39- case "discord" :
40- return new ApiResponse (HttpResponseStatus .OK , JsonBuilder .create ("provider" ,
41- JsonBuilder
42- .create ("client_id" , this .oAuth2Config .getDiscordClientId ())
43- .add ("redirect_uri" , this .oAuth2Config .getDiscordRedirectUri ())
44- .add ("scopes" , this .oAuth2Config .getDiscordScopes ())
45- ));
46- case "github" :
47- return new ApiResponse (HttpResponseStatus .OK , JsonBuilder .create ("provider" ,
48- JsonBuilder
49- .create ("client_id" , this .oAuth2Config .getGithubClientId ())
50- .add ("redirect_uri" , this .oAuth2Config .getGithubRedirectUri ())
51- .add ("scopes" , this .oAuth2Config .getGithubScopes ())
52- ));
53- default :
54- return new ApiResponse (HttpResponseStatus .NOT_FOUND , "PROVIDER" );
55- }
35+ public HttpOauth2Endpoints (final Key key ,
36+ final OAuth2Config oAuth2Config ,
37+ final OAuth2Provider oAuth2Provider ,
38+ final UserRepository userRepository ,
39+ final UserOAuthProviderIdRepository userOAuthProviderIdRepository ) {
40+ this .key = key ;
41+ this .oAuth2Provider = oAuth2Provider ;
42+ this .userRepository = userRepository ;
43+ this .userOAuthProviderIdRepository = userOAuthProviderIdRepository ;
44+ this .apiResponse = new ApiResponse (HttpResponseStatus .OK , List .of (
45+ JsonBuilder
46+ .create ("id" , "discord" )
47+ .add ("display_name" , "Discord" )
48+ .add ("auth_uri" , oAuth2Config .getDiscordAuthUri ()),
49+ JsonBuilder
50+ .create ("id" , "github" )
51+ .add ("display_name" , "GitHub" )
52+ .add ("auth_uri" , oAuth2Config .getGithubAuthUri ())
53+ ));
54+ }
55+
56+ @ ApiEndpoint (id = "list" )
57+ public ApiResponse list () {
58+ return this .apiResponse ;
5659 }
5760
5861 @ ApiEndpoint (id = "callback" )
@@ -61,10 +64,10 @@ public Mono<ApiResponse> callback(@ApiParameter(id = "provider") final String pr
6164 final Mono <String > userIdMono ;
6265 switch (provider ) {
6366 case "discord" :
64- userIdMono = oAuth2Provider .discordUserId (code );
67+ userIdMono = this . oAuth2Provider .discordUserId (code );
6568 break ;
6669 case "github" :
67- userIdMono = oAuth2Provider .githubUserId (code );
70+ userIdMono = this . oAuth2Provider .githubUserId (code );
6871 break ;
6972 default :
7073 return Mono .just (new ApiResponse (HttpResponseStatus .NOT_FOUND , "PROVIDER" ));
0 commit comments