UNPKG

kod-temp

Version:

Workano Communications SDK

118 lines (117 loc) 5.63 kB
/* 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]); };