kod-temp
Version:
Workano Communications SDK
118 lines (117 loc) • 5.63 kB
JavaScript
/* eslint-disable dot-notation */
import WorkanoApiClient from "../api-client";
// Can't use node cache mechanism here because when requiring lib/CallApi.js
// this file will be merge with CallApi.js and the cache will be lost.
// So we have to store values in global scope.
global.workanoClients = global.workanoClients || {};
global.workanoClientId = global.workanoClientId || {};
global.workanoClientToken = global.workanoClientToken || {};
global.workanoRefreshToken = global.workanoRefreshToken || {};
global.workanoRefreshTenantId = global.workanoRefreshTenantId || {};
global.workanoRefreshDomainName = global.workanoRefreshDomainName || {};
global.workanoOnRefreshToken = global.workanoOnRefreshToken || {};
global.workanoOnRefreshTokenError = global.workanoOnRefreshTokenError || {};
global.workanoRefreshExpiration = global.workanoRefreshExpiration || {};
global.workanoRefreshBackend = global.workanoRefreshBackend || {};
global.workanoIsMobile = global.workanoIsMobile || {};
global.workanoRequestApiTimeout = global.workanoRequestApiTimeout || {};
global.workanoFetchOptions = global.workanoFetchOptions || {};
export const setApiClientId = (clientId, forServer = null) => {
global.workanoClientId[String(forServer)] = clientId;
};
export const setCurrentServer = (newServer) => {
global.workanoCurrentServer = newServer;
};
export const setApiToken = (newToken, forServer = null) => {
global.workanoClientToken[String(forServer)] = newToken;
};
export const setRefreshToken = (newRefreshToken, forServer = null) => {
global.workanoRefreshToken[String(forServer)] = newRefreshToken;
};
export const setRefreshTenantId = (refreshTenantId, forServer = null) => {
console.warn("Use of `setRefreshTenantId` is deprecated, please use `setRefreshDomainName` instead");
global.workanoRefreshTenantId[String(forServer)] = refreshTenantId;
};
export const setRefreshDomainName = (refreshDomainName, forServer = null) => {
global.workanoRefreshDomainName[String(forServer)] = refreshDomainName;
};
export const setOnRefreshToken = (onRefreshToken, forServer = null) => {
global.workanoOnRefreshToken[String(forServer)] = onRefreshToken;
};
export const setOnRefreshTokenError = (callback, forServer = null) => {
global.workanoOnRefreshTokenError[String(forServer)] = callback;
};
export const setRefreshExpiration = (refreshExpiration, forServer = null) => {
global.workanoRefreshExpiration[String(forServer)] = refreshExpiration;
};
export const setRefreshBackend = (refreshBackend, forServer = null) => {
global.workanoRefreshBackend[String(forServer)] = refreshBackend;
};
export const setIsMobile = (isMobile, forServer = null) => {
global.workanoIsMobile[String(forServer)] = isMobile;
};
export const setRequestTimeout = (requestTimeout, forServer = null) => {
global.workanoRequestApiTimeout[String(forServer)] = requestTimeout;
};
export const setFetchOptions = (fetchOptions, forServer = null) => {
global.workanoFetchOptions[String(forServer)] = fetchOptions;
};
export const getFetchOptions = (forServer = null) => (forServer
? global.workanoFetchOptions[forServer]
: global.workanoFetchOptions.null) || global.workanoFetchOptions.null;
const fillClient = (apiClient) => {
const { server, token, clientId } = apiClient.client;
const tenantId = global.workanoRefreshTenantId[server] ||
global.workanoRefreshTenantId.null ||
apiClient.refreshTenantId;
const requestTimeout = global.workanoRequestApiTimeout[server] ||
global.workanoRequestApiTimeout.null;
// try with null server when dealing with non-related server info
apiClient.setToken(global.workanoClientToken[server] ||
global.workanoClientToken.null ||
token);
apiClient.setClientId(global.workanoClientId[server] ||
global.workanoClientId.null ||
clientId);
apiClient.setRefreshToken(global.workanoRefreshToken[server] ||
global.workanoRefreshToken.null ||
apiClient.refreshToken);
if (tenantId) {
apiClient.setRefreshTenantId(tenantId);
}
apiClient.setRefreshDomainName(global.workanoRefreshDomainName[server] ||
global.workanoRefreshDomainName.null ||
apiClient.refreshDomainName);
apiClient.setFetchOptions(global.workanoFetchOptions[server] ||
global.workanoFetchOptions.null ||
apiClient.fetchOptions);
apiClient.setOnRefreshToken(global.workanoOnRefreshToken[server] ||
global.workanoOnRefreshToken.null ||
apiClient.onRefreshToken);
apiClient.setOnRefreshTokenError(global.workanoOnRefreshTokenError[server] ||
global.workanoOnRefreshTokenError.null ||
apiClient.onRefreshTokenError);
apiClient.setRefreshExpiration(global.workanoRefreshExpiration[server] ||
global.workanoRefreshExpiration.null ||
apiClient.refreshExpiration);
apiClient.setRefreshBackend(global.workanoRefreshBackend[server] ||
global.workanoRefreshBackend.null ||
apiClient.refreshBackend);
apiClient.setIsMobile(global.workanoIsMobile[server] ||
global.workanoIsMobile.null ||
apiClient.isMobile);
if (requestTimeout) {
apiClient.setRequestTimeout(requestTimeout);
}
return apiClient;
};
export default (forServer = null) => {
const server = forServer || global.workanoCurrentServer || "";
if (server in global.workanoClients) {
return fillClient(global.workanoClients[server]);
}
global.workanoClients[server] = new WorkanoApiClient({
server,
});
return fillClient(global.workanoClients[server]);
};