|
1 |
| -import { infoLogger, tokenCache } from '..'; |
| 1 | +import { infoLogger, PubSubClient, tokenCache } from '..'; |
2 | 2 | import { TokenCacheStorage } from '../cache';
|
3 | 3 | import { MemoryStorageAdapter, RedisStorageAdapter } from '../cache/storage';
|
4 | 4 | import { Config, ServerError } from '../models';
|
5 | 5 | import { Token } from '../models/token.model';
|
| 6 | +import assert from 'node:assert'; |
6 | 7 |
|
7 | 8 | const REFRESH_MARKER_TTL = 5;
|
8 | 9 | const DEFAULT_TTL = 3540;
|
@@ -116,3 +117,29 @@ export async function getFreshAccessToken(
|
116 | 117 |
|
117 | 118 | return newToken.accessToken;
|
118 | 119 | }
|
| 120 | + |
| 121 | +export async function updateToken( |
| 122 | + config: Config, |
| 123 | + accessToken: string, |
| 124 | + providerKey: string, |
| 125 | +) { |
| 126 | + if (!tokenCache) { |
| 127 | + throw new ServerError( |
| 128 | + 500, |
| 129 | + 'Tried getting token from cache while cache was undefined.', |
| 130 | + ); |
| 131 | + } |
| 132 | + const newToken = { accessToken, isPending: false }; |
| 133 | + await tokenCache.set(providerKey, newToken, getTokenCacheTtl()); |
| 134 | + const { PUBSUB_TOPIC_NAME_UPDATE_PROVIDER_KEY } = process.env; |
| 135 | + assert( |
| 136 | + PUBSUB_TOPIC_NAME_UPDATE_PROVIDER_KEY, |
| 137 | + 'PUBSUB_TOPIC_NAME_UPDATE_PROVIDER_KEY is not defined', |
| 138 | + ); |
| 139 | + const pubSubClient = new PubSubClient(PUBSUB_TOPIC_NAME_UPDATE_PROVIDER_KEY); |
| 140 | + await pubSubClient.publishMessage({ |
| 141 | + userID: config.userId, |
| 142 | + providerKey, |
| 143 | + accessToken, |
| 144 | + }); |
| 145 | +} |
0 commit comments