data-and-reporting-sdk
Version:
Data And Reporting product consists of API's which provides details of transaction and invoice informations about shell cards. The Shell Card Transaction and Invoice API is REST-based and employs Basic authentication in Version 1 and Oauth authentication
69 lines (64 loc) • 2.01 kB
text/typescript
/**
* Shell Data & Reporting APIsLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
import {
basicAuthenticationProvider,
compositeAuthenticationProvider,
OAuthConfiguration,
requestAuthenticationProvider,
} from './authentication';
import { BearerTokenManager } from './bearerTokenManager';
import { Configuration } from './configuration';
import { OAuthToken } from './models/oAuthToken';
export function createAuthProviderFromConfig(
config: Partial<Configuration>,
bearerToken: () => BearerTokenManager | undefined
) {
const authConfig = {
basicAuth:
config.basicAuthCredentials &&
basicAuthenticationProvider(
config.basicAuthCredentials.username,
config.basicAuthCredentials.password
),
bearerToken:
config.bearerTokenCredentials &&
requestAuthenticationProvider(
config.bearerTokenCredentials.oAuthToken,
bearerTokenTokenProvider(
bearerToken,
config.bearerTokenCredentials.oAuthTokenProvider
),
config.bearerTokenCredentials.oAuthOnTokenUpdate,
{
clockSkew: config.bearerTokenCredentials.oAuthClockSkew,
} as OAuthConfiguration
),
};
return compositeAuthenticationProvider<
keyof typeof authConfig,
typeof authConfig
>(authConfig);
}
function bearerTokenTokenProvider(
bearerToken: () => BearerTokenManager | undefined,
defaultProvider:
| ((
lastOAuthToken: OAuthToken | undefined,
authManager: BearerTokenManager
) => Promise<OAuthToken>)
| undefined
): ((token: OAuthToken | undefined) => Promise<OAuthToken>) | undefined {
return (token: OAuthToken | undefined) => {
const manager = bearerToken();
if (manager === undefined) {
throw Error('Unable to find the OAuthManager instance');
}
if (defaultProvider === undefined) {
return manager.updateToken(token);
}
return defaultProvider(token, manager);
};
}