1
1
package net .cryptic_game .backend .server .server .http ;
2
2
3
3
import io .netty .handler .codec .http .HttpResponseStatus ;
4
- import lombok .RequiredArgsConstructor ;
5
4
import net .cryptic_game .backend .base .api .annotations .ApiEndpoint ;
6
5
import net .cryptic_game .backend .base .api .annotations .ApiEndpointCollection ;
7
6
import net .cryptic_game .backend .base .api .annotations .ApiParameter ;
21
20
22
21
import java .security .Key ;
23
22
import java .time .OffsetDateTime ;
23
+ import java .util .List ;
24
24
import java .util .Optional ;
25
25
26
- @ RequiredArgsConstructor
27
26
@ ApiEndpointCollection (id = "oauth2" , type = ApiType .REST )
28
27
public final class HttpOauth2Endpoints {
29
28
30
29
private final Key key ;
31
- private final OAuth2Config oAuth2Config ;
32
30
private final OAuth2Provider oAuth2Provider ;
33
31
private final UserRepository userRepository ;
34
32
private final UserOAuthProviderIdRepository userOAuthProviderIdRepository ;
33
+ private final ApiResponse apiResponse ;
35
34
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 ;
56
59
}
57
60
58
61
@ ApiEndpoint (id = "callback" )
@@ -61,10 +64,10 @@ public Mono<ApiResponse> callback(@ApiParameter(id = "provider") final String pr
61
64
final Mono <String > userIdMono ;
62
65
switch (provider ) {
63
66
case "discord" :
64
- userIdMono = oAuth2Provider .discordUserId (code );
67
+ userIdMono = this . oAuth2Provider .discordUserId (code );
65
68
break ;
66
69
case "github" :
67
- userIdMono = oAuth2Provider .githubUserId (code );
70
+ userIdMono = this . oAuth2Provider .githubUserId (code );
68
71
break ;
69
72
default :
70
73
return Mono .just (new ApiResponse (HttpResponseStatus .NOT_FOUND , "PROVIDER" ));
0 commit comments