mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
import { request as defaultRequest } from "@octokit/request";
|
|
import { oauthRequest } from "./utils.js";
|
|
async function refreshToken(options) {
|
|
const request = options.request || defaultRequest;
|
|
const response = await oauthRequest(
|
|
request,
|
|
"POST /login/oauth/access_token",
|
|
{
|
|
client_id: options.clientId,
|
|
client_secret: options.clientSecret,
|
|
grant_type: "refresh_token",
|
|
refresh_token: options.refreshToken
|
|
}
|
|
);
|
|
const apiTimeInMs = new Date(response.headers.date).getTime();
|
|
const authentication = {
|
|
clientType: "github-app",
|
|
clientId: options.clientId,
|
|
clientSecret: options.clientSecret,
|
|
token: response.data.access_token,
|
|
refreshToken: response.data.refresh_token,
|
|
expiresAt: toTimestamp(apiTimeInMs, response.data.expires_in),
|
|
refreshTokenExpiresAt: toTimestamp(
|
|
apiTimeInMs,
|
|
response.data.refresh_token_expires_in
|
|
)
|
|
};
|
|
return { ...response, authentication };
|
|
}
|
|
function toTimestamp(apiTimeInMs, expirationInSeconds) {
|
|
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
|
|
}
|
|
export {
|
|
refreshToken
|
|
};
|