Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd8779cd

Browse files
committed
Smol refactorings
1 parentf372fee commitd8779cd

File tree

1 file changed

+34
-49
lines changed

1 file changed

+34
-49
lines changed

‎src/oauth/oauthHelper.ts‎

Lines changed: 34 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ import type {
1616
TokenResponse,
1717
}from"./types";
1818

19-
constOAUTH_GRANT_TYPE="authorization_code"asconst;
20-
constOAUTH_RESPONSE_TYPE="code"asconst;
21-
constOAUTH_AUTH_METHOD="client_secret_post"asconst;
19+
constAUTH_GRANT_TYPE="authorization_code"asconst;
20+
constREFRESH_GRANT_TYPE="refresh_token"asconst;
21+
constRESPONSE_TYPE="code"asconst;
22+
constOAUTH_METHOD="client_secret_post"asconst;
2223
constPKCE_CHALLENGE_METHOD="S256"asconst;
2324
constCLIENT_NAME="VS Code Coder Extension";
2425

26+
constREQUIRED_GRANT_TYPES=[AUTH_GRANT_TYPE,REFRESH_GRANT_TYPE]asconst;
27+
2528
exportclassCoderOAuthHelper{
2629
privateclientRegistration:ClientRegistrationResponse|undefined;
2730
privatecachedMetadata:OAuthServerMetadata|undefined;
@@ -46,7 +49,7 @@ export class CoderOAuthHelper {
4649
logger,
4750
context,
4851
);
49-
awaithelper.loadRegistration();
52+
awaithelper.loadClientRegistration();
5053
returnhelper;
5154
}
5255
privateconstructor(
@@ -67,13 +70,7 @@ export class CoderOAuthHelper {
6770

6871
constresponse=awaitthis.client
6972
.getAxiosInstance()
70-
.request<OAuthServerMetadata>({
71-
url:"/.well-known/oauth-authorization-server",
72-
method:"GET",
73-
headers:{
74-
Accept:"application/json",
75-
},
76-
});
73+
.get<OAuthServerMetadata>("/.well-known/oauth-authorization-server");
7774

7875
constmetadata=response.data;
7976

@@ -89,33 +86,26 @@ export class CoderOAuthHelper {
8986
}
9087

9188
if(
92-
!includesAllTypes(metadata.grant_types_supported,[
93-
OAUTH_GRANT_TYPE,
94-
"refresh_token",
95-
])
89+
!includesAllTypes(metadata.grant_types_supported,REQUIRED_GRANT_TYPES)
9690
){
9791
thrownewError(
98-
`Server does not support required grant types:authorization_code, refresh_token. Supported:${metadata.grant_types_supported?.join(", ")||"none"}`,
92+
`Server does not support required grant types:${REQUIRED_GRANT_TYPES.join(", ")}. Supported:${metadata.grant_types_supported?.join(", ")||"none"}`,
9993
);
10094
}
10195

102-
if(
103-
!includesAllTypes(metadata.response_types_supported,[
104-
OAUTH_RESPONSE_TYPE,
105-
])
106-
){
96+
if(!includesAllTypes(metadata.response_types_supported,[RESPONSE_TYPE])){
10797
thrownewError(
108-
`Server does not support required response type:code. Supported:${metadata.response_types_supported?.join(", ")||"none"}`,
98+
`Server does not support required response type:${RESPONSE_TYPE}. Supported:${metadata.response_types_supported?.join(", ")||"none"}`,
10999
);
110100
}
111101

112102
if(
113103
!includesAllTypes(metadata.token_endpoint_auth_methods_supported,[
114-
OAUTH_AUTH_METHOD,
104+
OAUTH_METHOD,
115105
])
116106
){
117107
thrownewError(
118-
`Server does not support required auth method:client_secret_post. Supported:${metadata.token_endpoint_auth_methods_supported?.join(", ")||"none"}`,
108+
`Server does not support required auth method:${OAUTH_METHOD}. Supported:${metadata.token_endpoint_auth_methods_supported?.join(", ")||"none"}`,
119109
);
120110
}
121111

@@ -125,7 +115,7 @@ export class CoderOAuthHelper {
125115
])
126116
){
127117
thrownewError(
128-
`Server does not support required PKCE method:S256. Supported:${metadata.code_challenge_methods_supported?.join(", ")||"none"}`,
118+
`Server does not support required PKCE method:${PKCE_CHALLENGE_METHOD}. Supported:${metadata.code_challenge_methods_supported?.join(", ")||"none"}`,
129119
);
130120
}
131121

@@ -143,15 +133,15 @@ export class CoderOAuthHelper {
143133
return`${vscode.env.uriScheme}://${this.extensionId}${CALLBACK_PATH}`;
144134
}
145135

146-
privateasyncloadRegistration():Promise<void>{
136+
privateasyncloadClientRegistration():Promise<void>{
147137
constregistration=awaitthis.secretsManager.getOAuthClientRegistration();
148138
if(registration){
149139
this.clientRegistration=registration;
150140
this.logger.info("Loaded existing OAuth client:",registration.client_id);
151141
}
152142
}
153143

154-
privateasyncsaveRegistration(
144+
privateasyncsaveClientRegistration(
155145
registration:ClientRegistrationResponse,
156146
):Promise<void>{
157147
awaitthis.secretsManager.setOAuthClientRegistration(registration);
@@ -191,25 +181,21 @@ export class CoderOAuthHelper {
191181
constregistrationRequest:ClientRegistrationRequest={
192182
redirect_uris:[redirectUri],
193183
application_type:"native",
194-
grant_types:[OAUTH_GRANT_TYPE],
195-
response_types:[OAUTH_RESPONSE_TYPE],
184+
grant_types:[AUTH_GRANT_TYPE],
185+
response_types:[RESPONSE_TYPE],
196186
client_name:CLIENT_NAME,
197-
token_endpoint_auth_method:OAUTH_AUTH_METHOD,
187+
token_endpoint_auth_method:OAUTH_METHOD,
198188
};
199189

200190
constresponse=awaitthis.client
201191
.getAxiosInstance()
202-
.request<ClientRegistrationResponse>({
203-
url:metadata.registration_endpoint,
204-
method:"POST",
205-
headers:{
206-
"Content-Type":"application/json",
207-
Accept:"application/json",
208-
},
209-
data:registrationRequest,
210-
});
192+
.post<ClientRegistrationResponse>(
193+
metadata.registration_endpoint,
194+
registrationRequest,
195+
);
196+
197+
awaitthis.saveClientRegistration(response.data);
211198

212-
awaitthis.saveRegistration(response.data);
213199
returnresponse.data.client_id;
214200
}
215201

@@ -232,7 +218,7 @@ export class CoderOAuthHelper {
232218

233219
constparams:AuthorizationRequestParams={
234220
client_id:clientId,
235-
response_type:OAUTH_RESPONSE_TYPE,
221+
response_type:RESPONSE_TYPE,
236222
redirect_uri:this.getRedirectUri(),
237223
scope,
238224
state,
@@ -268,12 +254,15 @@ export class CoderOAuthHelper {
268254

269255
returnnewPromise<{code:string;verifier:string}>(
270256
(resolve,reject)=>{
257+
consttimeoutMins=5;
271258
consttimeout=setTimeout(
272259
()=>{
273260
this.clearPendingAuth();
274-
reject(newError("OAuth flow timed out after 5 minutes"));
261+
reject(
262+
newError(`OAuth flow timed out after${timeoutMins} minutes`),
263+
);
275264
},
276-
5*60*1000,
265+
timeoutMins*60*1000,
277266
);
278267

279268
constclearPromise=()=>{
@@ -366,7 +355,7 @@ export class CoderOAuthHelper {
366355
this.logger.info("Exchanging authorization code for token");
367356

368357
constparams:TokenRequestParams={
369-
grant_type:OAUTH_GRANT_TYPE,
358+
grant_type:AUTH_GRANT_TYPE,
370359
code,
371360
redirect_uri:this.getRedirectUri(),
372361
client_id:this.clientRegistration.client_id,
@@ -383,14 +372,10 @@ export class CoderOAuthHelper {
383372

384373
constresponse=awaitthis.client
385374
.getAxiosInstance()
386-
.request<TokenResponse>({
387-
url:metadata.token_endpoint,
388-
method:"POST",
375+
.post<TokenResponse>(metadata.token_endpoint,tokenRequest.toString(),{
389376
headers:{
390377
"Content-Type":"application/x-www-form-urlencoded",
391-
Accept:"application/json",
392378
},
393-
data:tokenRequest.toString(),
394379
});
395380

396381
this.logger.info("Token exchange successful");

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp