@@ -26,14 +26,56 @@ import { getGitpodService } from "./service";
26
26
27
27
export class JsonRpcAuthProviderClient implements PromiseClient < typeof AuthProviderService > {
28
28
async createAuthProvider ( request : PartialMessage < CreateAuthProviderRequest > ) : Promise < CreateAuthProviderResponse > {
29
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
29
+ const ownerId = request . owner ?. case === "ownerId" ? request . owner . value : undefined ;
30
+ const organizationId = request . owner ?. case === "organizationId" ? request . owner . value : undefined ;
31
+
32
+ if ( ! organizationId && ! ownerId ) {
33
+ throw new ConnectError ( "organizationId or ownerId is required" , Code . InvalidArgument ) ;
34
+ }
35
+ if ( ! request . type ) {
36
+ throw new ConnectError ( "type is required" , Code . InvalidArgument ) ;
37
+ }
38
+ if ( ! request . host ) {
39
+ throw new ConnectError ( "host is required" , Code . InvalidArgument ) ;
40
+ }
41
+
42
+ if ( organizationId ) {
43
+ const result = await getGitpodService ( ) . server . createOrgAuthProvider ( {
44
+ entry : {
45
+ organizationId,
46
+ host : request . host ,
47
+ type : converter . fromAuthProviderType ( request . type ) ,
48
+ clientId : request . oauth2Config ?. clientId ,
49
+ clientSecret : request . oauth2Config ?. clientSecret ,
50
+ } ,
51
+ } ) ;
52
+ return new CreateAuthProviderResponse ( { authProvider : converter . toAuthProvider ( result ) } ) ;
53
+ }
54
+ if ( ownerId ) {
55
+ const result = await getGitpodService ( ) . server . updateOwnAuthProvider ( {
56
+ entry : {
57
+ host : request . host ,
58
+ ownerId,
59
+ type : converter . fromAuthProviderType ( request . type ) ,
60
+ clientId : request . oauth2Config ?. clientId ,
61
+ clientSecret : request . oauth2Config ?. clientSecret ,
62
+ } ,
63
+ } ) ;
64
+ return new CreateAuthProviderResponse ( { authProvider : converter . toAuthProvider ( result ) } ) ;
65
+ }
66
+
67
+ throw new ConnectError ( "organizationId or ownerId is required" , Code . InvalidArgument ) ;
30
68
}
31
69
32
70
async getAuthProvider ( request : PartialMessage < GetAuthProviderRequest > ) : Promise < GetAuthProviderResponse > {
33
71
if ( ! request . authProviderId ) {
34
72
throw new ConnectError ( "authProviderId is required" , Code . InvalidArgument ) ;
35
73
}
36
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
74
+
75
+ const provider = await getGitpodService ( ) . server . getAuthProvider ( request . authProviderId ) ;
76
+ return new GetAuthProviderResponse ( {
77
+ authProvider : converter . toAuthProvider ( provider ) ,
78
+ } ) ;
37
79
}
38
80
39
81
async listAuthProviders ( request : PartialMessage < ListAuthProvidersRequest > ) : Promise < ListAuthProvidersResponse > {
0 commit comments