MCPcopy Index your code
hub / github.com/sourcebot-dev/sourcebot / refreshOAuthToken

Function refreshOAuthToken

packages/backend/src/ee/tokenRefresh.ts:154–191  ·  view source on GitHub ↗
(
    providerId: string,
    providerType: SupportedProviderType,
    refreshToken: string,
)

Source from the content-addressed store, hash-verified

152};
153
154const refreshOAuthToken = async (
155 providerId: string,
156 providerType: SupportedProviderType,
157 refreshToken: string,
158): Promise<OAuthTokenResponse | null> => {
159 try {
160 const idpConfig = await getIdentityProviderConfig(providerId);
161
162 if (!idpConfig) {
163 logger.error(`No provider config found for: ${providerId}`);
164 return null;
165 }
166
167 const linkedAccountProviderConfig = idpConfig as
168 GitHubIdentityProviderConfig |
169 GitLabIdentityProviderConfig |
170 BitbucketCloudIdentityProviderConfig |
171 BitbucketServerIdentityProviderConfig;
172
173 // Get client credentials from config
174 const clientId = await getTokenFromConfig(linkedAccountProviderConfig.clientId);
175 const clientSecret = await getTokenFromConfig(linkedAccountProviderConfig.clientSecret);
176 const baseUrl = 'baseUrl' in linkedAccountProviderConfig
177 ? linkedAccountProviderConfig.baseUrl
178 : undefined;
179
180 const result = await tryRefreshToken(providerType, refreshToken, { clientId, clientSecret, baseUrl });
181 if (result) {
182 return result;
183 }
184
185 logger.error(`Token refresh failed for ${providerId}`);
186 return null;
187 } catch (e) {
188 logger.error(`Error refreshing ${providerType} token:`, e);
189 return null;
190 }
191};
192
193const tryRefreshToken = async (
194 providerType: SupportedProviderType,

Callers 1

ensureFreshAccountTokenFunction · 0.85

Calls 3

getTokenFromConfigFunction · 0.90
tryRefreshTokenFunction · 0.85

Tested by

no test coverage detected