@sipgate/integration-bridge 0.22.10 → 0.22.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { TokenStorageCache } from './cache';
4
4
  import { Adapter } from './models';
5
5
  import { CustomRouter } from './models/custom-router.model';
6
6
  import { CustomRoute } from './models/custom-routes.model';
7
- export declare let tokenCache: TokenStorageCache;
7
+ export declare let tokenCache: TokenStorageCache | undefined;
8
8
  export declare function start(adapter: Adapter, customRouters?: CustomRouter[], customRoutes?: CustomRoute[]): Server;
9
9
  export declare const deleteContactCacheItem: (key: string) => Promise<void>;
10
10
  export declare const getContactCacheItem: (key: string) => Promise<import("./models").Contact[] | import("./models/cache-item-state.model").CacheItemState>;
@@ -2,5 +2,5 @@ import { TokenStorageCache } from '../cache';
2
2
  import { Config } from '../models';
3
3
  import { Token } from '../models/token.model';
4
4
  export type TokenRefreshFn = (config: Config) => Promise<Token>;
5
- export declare function getTokenCache(): TokenStorageCache;
5
+ export declare function getTokenCache(): TokenStorageCache | undefined;
6
6
  export declare function getFreshAccessToken(config: Config, refreshFn: TokenRefreshFn, force?: boolean): Promise<string>;
@@ -15,28 +15,41 @@ const storage_1 = require("../cache/storage");
15
15
  const models_1 = require("../models");
16
16
  const __1 = require("..");
17
17
  const REFRESH_MARKER_TTL = 5;
18
+ const DEFAULT_TTL = '3540';
19
+ let KEY_PREFIX;
18
20
  function useCollection(value) {
19
- const { INTEGRATION_NAME } = process.env;
20
- if (!INTEGRATION_NAME) {
21
- return value;
22
- }
23
- return `${INTEGRATION_NAME}:${value.replace(/:/g, '_')}`;
21
+ return `${KEY_PREFIX}:${value.replace(/:/g, '_')}`;
24
22
  }
25
23
  function getTokenCache() {
26
- const { REDIS_URL, INTEGRATION_NAME } = process.env;
24
+ const { REDIS_URL, INTEGRATION_NAME, OAUTH2_IDENTIFIER, OAUTH2_REDIRECT_URL, } = process.env;
25
+ // if oauth is not configured, token cache is not needed
26
+ if (!OAUTH2_REDIRECT_URL) {
27
+ (0, __1.infoLogger)('TOKEN CACHE', 'No OAUTH2_REDIRECT_URL provided, skipping token cache initialization.');
28
+ return;
29
+ }
27
30
  if (REDIS_URL) {
28
- if (!INTEGRATION_NAME)
29
- throw new models_1.ServerError(500, 'Missing INTEGRATION_NAME variable, cannot initialize Redis token cache.');
30
- console.log(`[TOKEN CACHE] Using Redis cache for integration ${INTEGRATION_NAME}`);
31
+ if (INTEGRATION_NAME) {
32
+ KEY_PREFIX = INTEGRATION_NAME;
33
+ }
34
+ else if (OAUTH2_IDENTIFIER) {
35
+ (0, __1.warnLogger)('TOKEN CACHE', 'Using OAUTH2_IDENTIFIER is deprecated, specify INTEGRATION_NAME instead.');
36
+ KEY_PREFIX = OAUTH2_IDENTIFIER;
37
+ }
38
+ else {
39
+ throw new models_1.ServerError(500, 'Could not specify KEY_PREFIX for getTokenCache, missing environment variable INTEGRATION_NAME.');
40
+ }
41
+ (0, __1.infoLogger)(`TOKEN CACHE`, `Using Redis cache with prefix ${KEY_PREFIX}`);
31
42
  return new cache_1.TokenStorageCache(new storage_1.RedisStorageAdapter(REDIS_URL));
32
43
  }
33
- console.log('[TOKEN CACHE] Using memory cache');
34
44
  const { TOKEN_CACHE_TTL } = process.env;
35
- return new cache_1.TokenStorageCache(new storage_1.MemoryStorageAdapter(parseInt(TOKEN_CACHE_TTL || '60')));
45
+ (0, __1.infoLogger)('TOKEN CACHE', `Using memory cache with TTL ${TOKEN_CACHE_TTL || DEFAULT_TTL}`);
46
+ return new cache_1.TokenStorageCache(new storage_1.MemoryStorageAdapter(parseInt(TOKEN_CACHE_TTL || DEFAULT_TTL)));
36
47
  }
37
48
  exports.getTokenCache = getTokenCache;
38
49
  function getFreshAccessToken(config, refreshFn, force = false) {
39
50
  return __awaiter(this, void 0, void 0, function* () {
51
+ if (__1.tokenCache === undefined)
52
+ throw new models_1.ServerError(500, 'Tried getting token from cache while cache was undefined.');
40
53
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
41
54
  if (force) {
42
55
  const newToken = yield getNewToken(config, refreshFn);
@@ -56,13 +69,15 @@ function getFreshAccessToken(config, refreshFn, force = false) {
56
69
  exports.getFreshAccessToken = getFreshAccessToken;
57
70
  function getNewToken(config, refreshFn) {
58
71
  return __awaiter(this, void 0, void 0, function* () {
72
+ if (__1.tokenCache === undefined)
73
+ throw new models_1.ServerError(500, 'Tried getting token from cache while cache was undefined.');
59
74
  yield __1.tokenCache.set(useCollection(config.apiKey), {
60
75
  refresh_token: '',
61
76
  access_token: '',
62
77
  isPending: true,
63
78
  }, REFRESH_MARKER_TTL);
64
79
  const newToken = Object.assign(Object.assign({}, (yield refreshFn(config))), { isPending: false });
65
- yield __1.tokenCache.set(useCollection(config.apiKey), newToken, parseInt(process.env.TOKEN_CACHE_TTL || '60'));
80
+ yield __1.tokenCache.set(useCollection(config.apiKey), newToken, parseInt(process.env.TOKEN_CACHE_TTL || DEFAULT_TTL));
66
81
  return newToken;
67
82
  });
68
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-util.js","sourceRoot":"","sources":["../../src/util/token-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-util.js","sourceRoot":"","sources":["../../src/util/token-util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sipgate/integration-bridge",
3
- "version": "0.22.10",
3
+ "version": "0.22.11",
4
4
  "description": "sipgate Integration Bridge Framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",