import { ConfigurationError } from './error'; import { WebApiClient } from '../web-api/web-api-client'; import { WebApiConfiguration } from './web-api-configuration'; import { OauthProvider, OathInterface } from './oauth-provider'; import { AccessTokenProvider, AccessTokenProviderInterface, AccessToken } from './access-token-provider'; /** * @export * @class WebApiContext * @implements {AccessTokenProviderInterface} * @implements {OathInterface} */ export class WebApiContext implements AccessTokenProviderInterface, OathInterface { accessTokenProvider: AccessTokenProvider; oauthProvider: OauthProvider; /** * Delegate getAccessToken call to accessTokenProvider if there is any * @returns {Promise} * * @memberOf WebApiContext */ getAccessToken(): Promise { this._ensureRightConfiguration(); return this.accessTokenProvider.getAccessToken(); } /** * Delegate refreshAccessToken call to accessTokenProvider if there is any * @returns {Promise} * * @memberOf WebApiContext */ refreshAccessToken(): Promise { this._ensureRightConfiguration(); return this.accessTokenProvider.refreshAccessToken(); } /** * Returns login url to CSAS MEP in string * @returns {string} * * @memberOf WebApiContext */ getOauth2Url(): string { return this.oauthProvider.getOauth2Url(); } /** * Extracts access token from redirect url and sets it on AccessTokenProvider * @param {string} url * @returns {Promise} * * @memberOf WebApiContext */ processRedirect(url: string): Promise { return this.oauthProvider.processRedirect(url); } /** * Set AccessToken on AccessTokenProvider * @param {(AccessToken | string)} token * @returns {void} * * @memberOf WebApiContext */ useAccessToken(token: AccessToken | string): void { return this.accessTokenProvider.useAccessToken(token); } /** * Set code on accessTokenProvider that is used for retrieving access token if you are using Authorization Code grant type * @param {string} code * @returns {void} * * @memberOf WebApiContext */ useCode(code: string): void { this.accessTokenProvider.useCode(code); } /** * Returns code on accessTokenProvider that is used for retrieving access token if you are using Authorization Code grant type * @returns {string} * * @memberOf WebApiContext */ getCode(): string { return this.accessTokenProvider.getCode(); } /** * Ensure that accessTokenProvider is set * @private * @returns {void} * * @memberOf WebApiContext */ private _ensureRightConfiguration(): void { if (!this.accessTokenProvider) { throw new ConfigurationError("AccessTokenProvider has to be set on SharedContext if you want to call SharedContext's methods"); } } }