@adtrackify/at-service-common 3.0.79 → 3.0.81
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/cjs/clients/generic/lambda-invoke-client.d.ts +6 -1
- package/dist/cjs/clients/generic/lambda-invoke-client.js +10 -10
- package/dist/cjs/clients/generic/lambda-invoke-client.js.map +1 -1
- package/dist/cjs/clients/generic/redis-client.d.ts +4 -2
- package/dist/cjs/clients/generic/redis-client.js +16 -2
- package/dist/cjs/clients/generic/redis-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/cache-lambda-client.d.ts +23 -0
- package/dist/cjs/clients/internal-api/cache-lambda-client.js +60 -0
- package/dist/cjs/clients/internal-api/cache-lambda-client.js.map +1 -0
- package/dist/cjs/clients/internal-api/index.d.ts +1 -0
- package/dist/cjs/clients/internal-api/index.js +1 -0
- package/dist/cjs/clients/internal-api/index.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-db-service.d.ts +4 -8
- package/dist/cjs/services/db/identity-cache-db-service.js +93 -68
- package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/cjs/services/ipdata-lookup-service.d.ts +9 -2
- package/dist/cjs/services/ipdata-lookup-service.js +56 -77
- package/dist/cjs/services/ipdata-lookup-service.js.map +1 -1
- package/dist/esm/clients/generic/lambda-invoke-client.d.ts +6 -1
- package/dist/esm/clients/generic/lambda-invoke-client.js +10 -10
- package/dist/esm/clients/generic/lambda-invoke-client.js.map +1 -1
- package/dist/esm/clients/generic/redis-client.d.ts +4 -2
- package/dist/esm/clients/generic/redis-client.js +16 -2
- package/dist/esm/clients/generic/redis-client.js.map +1 -1
- package/dist/esm/clients/internal-api/cache-lambda-client.d.ts +23 -0
- package/dist/esm/clients/internal-api/cache-lambda-client.js +56 -0
- package/dist/esm/clients/internal-api/cache-lambda-client.js.map +1 -0
- package/dist/esm/clients/internal-api/index.d.ts +1 -0
- package/dist/esm/clients/internal-api/index.js +1 -0
- package/dist/esm/clients/internal-api/index.js.map +1 -1
- package/dist/esm/services/db/identity-cache-db-service.d.ts +4 -8
- package/dist/esm/services/db/identity-cache-db-service.js +94 -69
- package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/esm/services/ipdata-lookup-service.d.ts +9 -2
- package/dist/esm/services/ipdata-lookup-service.js +55 -75
- package/dist/esm/services/ipdata-lookup-service.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CacheLambdaClient, LambdaInvokeClient } from '../../clients';
|
|
2
2
|
import { getCurrentTimestamp } from '../../libs';
|
|
3
3
|
import { Logger } from '../../helpers';
|
|
4
|
-
import { RedisClient } from '../../clients/generic/redis-client';
|
|
5
4
|
import { isIdentityCacheStale } from '../../helpers/identity-cache-helper';
|
|
6
|
-
const DEFAULT_CACHE_TTL_IN_MONTHS = 6;
|
|
7
5
|
const IDENTITY_CACHE_TTL_IN_SECONDS = 60 * 60 * 24 * 30 * 6;
|
|
8
6
|
export class IdentityCacheDbService {
|
|
9
|
-
|
|
10
|
-
TABLE_KEY;
|
|
11
|
-
TTL_IN_MONTHS;
|
|
12
|
-
redisClient;
|
|
7
|
+
cacheLambdaClient;
|
|
13
8
|
lambdaInvokeClient;
|
|
14
|
-
constructor(
|
|
15
|
-
this.
|
|
16
|
-
this.TABLE_KEY = tableKey;
|
|
17
|
-
this.TTL_IN_MONTHS = cacheTtlInMonths || DEFAULT_CACHE_TTL_IN_MONTHS;
|
|
18
|
-
this.redisClient = new RedisClient(redisHost, redisPort);
|
|
9
|
+
constructor(cacheLambdaFunctionArn) {
|
|
10
|
+
this.cacheLambdaClient = new CacheLambdaClient(cacheLambdaFunctionArn);
|
|
19
11
|
this.lambdaInvokeClient = new LambdaInvokeClient();
|
|
20
12
|
}
|
|
21
13
|
getIdentityWithCaching = async (pixelId, incomingIdentity = {}, identifyPrivateLambdaArn) => {
|
|
@@ -24,12 +16,17 @@ export class IdentityCacheDbService {
|
|
|
24
16
|
Logger.error('getIdentityWithCaching -No pixelId or incomingIdentity', { pixelId, incomingIdentity });
|
|
25
17
|
return undefined;
|
|
26
18
|
}
|
|
27
|
-
|
|
19
|
+
let { resolvedIdentity, updateCache } = await this.getIdentityFromCache(pixelId, incomingIdentity);
|
|
28
20
|
if (!resolvedIdentity) {
|
|
29
21
|
Logger.debug('identity cache miss - fetching from identity service', { incomingIdentity });
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
|
|
22
|
+
const response = await this.lambdaInvokeClient.invokeFunction(identifyPrivateLambdaArn, { pixelId, context: { identity: incomingIdentity } });
|
|
23
|
+
if (response?.statusCode === 200 && response?.body) {
|
|
24
|
+
const identifyResponse = JSON.parse(response.body);
|
|
25
|
+
resolvedIdentity = identifyResponse?.identity;
|
|
26
|
+
updateCache = true;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
Logger.error('Failed to getIdentity from identifyPrivateLambda', { response, pixelId, incomingIdentity, identifyPrivateLambdaArn });
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
else {
|
|
@@ -57,39 +54,60 @@ export class IdentityCacheDbService {
|
|
|
57
54
|
response,
|
|
58
55
|
updatedAt: getCurrentTimestamp(),
|
|
59
56
|
};
|
|
57
|
+
const setCacheCommands = [];
|
|
60
58
|
const cacheKey = `identId_${pixelId}_${response.identityId}`;
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
setCacheCommands.push({
|
|
60
|
+
cacheKey,
|
|
61
|
+
commandType: 'set',
|
|
62
|
+
data: JSON.stringify(identityCache),
|
|
63
|
+
expires: IDENTITY_CACHE_TTL_IN_SECONDS,
|
|
64
|
+
});
|
|
63
65
|
if (request?.identityId) {
|
|
64
66
|
const cacheKey = `identId_${pixelId}_${request.identityId}`;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
setCacheCommands.push({
|
|
68
|
+
cacheKey,
|
|
69
|
+
commandType: 'set',
|
|
70
|
+
data: JSON.stringify(identityCache),
|
|
71
|
+
expires: IDENTITY_CACHE_TTL_IN_SECONDS,
|
|
72
|
+
});
|
|
67
73
|
}
|
|
68
74
|
if (response?.traits?.emails && response?.traits?.emails?.length > 0) {
|
|
69
75
|
for (let i = 0; i < response.traits.emails.length; i++) {
|
|
70
76
|
const cacheKey = `identEmail_${pixelId}_${response.traits.emails[i]}`;
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
setCacheCommands.push({
|
|
78
|
+
cacheKey,
|
|
79
|
+
commandType: 'set',
|
|
80
|
+
data: JSON.stringify(identityCache),
|
|
81
|
+
expires: IDENTITY_CACHE_TTL_IN_SECONDS,
|
|
82
|
+
});
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
85
|
if (response?.traits?.userIds && response?.traits?.userIds?.length > 0) {
|
|
76
86
|
for (let i = 0; i < response.traits.userIds.length; i++) {
|
|
77
87
|
const cacheKey = `identUserId_${pixelId}_${response.traits.userIds[i]}`;
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
setCacheCommands.push({
|
|
89
|
+
cacheKey,
|
|
90
|
+
commandType: 'set',
|
|
91
|
+
data: JSON.stringify(identityCache),
|
|
92
|
+
expires: IDENTITY_CACHE_TTL_IN_SECONDS,
|
|
93
|
+
});
|
|
80
94
|
}
|
|
81
95
|
}
|
|
96
|
+
const start = performance.now();
|
|
97
|
+
const res = await this.cacheLambdaClient.batchInvoke(setCacheCommands);
|
|
98
|
+
const end = performance.now();
|
|
99
|
+
Logger.debug('updated identity cache', { res, duration: end - start });
|
|
100
|
+
return res;
|
|
82
101
|
};
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (resolvedIdentity?.identityId) {
|
|
91
|
-
await DynamoDbClient.safeDelete(this.TABLE_NAME, this.TABLE_KEY, resolvedIdentity?.identityId);
|
|
102
|
+
getIdentityCache = async (cacheKey) => {
|
|
103
|
+
const start = performance.now();
|
|
104
|
+
const cacheResponse = await this.cacheLambdaClient.invokeGet(cacheKey);
|
|
105
|
+
const end = performance.now();
|
|
106
|
+
Logger.debug('getIdentityCache', { cacheKey, cacheResponse, duration: end - start });
|
|
107
|
+
if (cacheResponse && cacheResponse.responseData) {
|
|
108
|
+
return cacheResponse.responseData;
|
|
92
109
|
}
|
|
110
|
+
return undefined;
|
|
93
111
|
};
|
|
94
112
|
async getIdentityFromCache(pixelId, incomingIdentity) {
|
|
95
113
|
try {
|
|
@@ -101,13 +119,12 @@ export class IdentityCacheDbService {
|
|
|
101
119
|
if (incomingIdentity?.identityId) {
|
|
102
120
|
const cacheKey = `identId_${pixelId}_${incomingIdentity.identityId}`;
|
|
103
121
|
Logger.debug(' try lookup with identityId', { cacheKey });
|
|
104
|
-
const cachedIdentity = await this.
|
|
122
|
+
const cachedIdentity = await this.getIdentityCache(cacheKey);
|
|
105
123
|
if (cachedIdentity) {
|
|
106
124
|
Logger.debug(' found cached identity', { cacheKey, cachedIdentity });
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
resolvedIdentity = identityCache.response;
|
|
125
|
+
if (!isIdentityCacheStale(cachedIdentity, incomingIdentity)) {
|
|
126
|
+
Logger.debug('cache not stale', { cacheKey, cachedIdentity });
|
|
127
|
+
resolvedIdentity = cachedIdentity.response;
|
|
111
128
|
}
|
|
112
129
|
}
|
|
113
130
|
}
|
|
@@ -115,13 +132,12 @@ export class IdentityCacheDbService {
|
|
|
115
132
|
for (let i = 0; i < incomingIdentity.traits.emails.length; i++) {
|
|
116
133
|
const cacheKey = `identEmail_${pixelId}_${incomingIdentity.traits.emails[i]}`;
|
|
117
134
|
Logger.debug(' try lookup with email', { cacheKey });
|
|
118
|
-
const cachedIdentity = await this.
|
|
135
|
+
const cachedIdentity = await this.getIdentityCache(cacheKey);
|
|
119
136
|
if (cachedIdentity) {
|
|
120
137
|
Logger.debug(' found cached identity', { cacheKey, cachedIdentity });
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
resolvedIdentity = identityCache.response;
|
|
138
|
+
if (!isIdentityCacheStale(cachedIdentity, incomingIdentity)) {
|
|
139
|
+
Logger.debug('cache not stale', { cacheKey, cachedIdentity });
|
|
140
|
+
resolvedIdentity = cachedIdentity.response;
|
|
125
141
|
updateCache = true;
|
|
126
142
|
break;
|
|
127
143
|
}
|
|
@@ -132,28 +148,18 @@ export class IdentityCacheDbService {
|
|
|
132
148
|
for (let i = 0; i < incomingIdentity.traits.userIds.length; i++) {
|
|
133
149
|
const cacheKey = `identUserId_${pixelId}_${incomingIdentity.traits.userIds[i]}`;
|
|
134
150
|
Logger.debug(' try lookup with userId', { cacheKey });
|
|
135
|
-
const cachedIdentity = await this.
|
|
151
|
+
const cachedIdentity = await this.getIdentityCache(cacheKey);
|
|
136
152
|
if (cachedIdentity) {
|
|
137
153
|
Logger.debug(' found cached identity', { cacheKey, cachedIdentity });
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
resolvedIdentity = identityCache.response;
|
|
154
|
+
if (!isIdentityCacheStale(cachedIdentity, incomingIdentity)) {
|
|
155
|
+
Logger.debug('cache not stale', { cacheKey, cachedIdentity });
|
|
156
|
+
resolvedIdentity = cachedIdentity.response;
|
|
142
157
|
updateCache = true;
|
|
143
158
|
break;
|
|
144
159
|
}
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
162
|
}
|
|
148
|
-
if (!resolvedIdentity) {
|
|
149
|
-
const identityCache = incomingIdentity?.identityId ? await this.getIdentityCacheFromDynamoDb(incomingIdentity?.identityId) : undefined;
|
|
150
|
-
if (identityCache) {
|
|
151
|
-
if (!isIdentityCacheStale(identityCache, incomingIdentity)) {
|
|
152
|
-
resolvedIdentity = identityCache.response;
|
|
153
|
-
updateCache = true;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
163
|
return { resolvedIdentity, updateCache };
|
|
158
164
|
}
|
|
159
165
|
catch (err) {
|
|
@@ -163,36 +169,55 @@ export class IdentityCacheDbService {
|
|
|
163
169
|
}
|
|
164
170
|
async deleteIdentityCache(pixelId, incomingIdentity, resolvedIdentity) {
|
|
165
171
|
await this.deleteIdentityCacheRedis(pixelId, incomingIdentity, resolvedIdentity);
|
|
166
|
-
await this.deleteIdentityCacheDynamoDb(incomingIdentity, resolvedIdentity);
|
|
167
172
|
}
|
|
168
173
|
async deleteIdentityCacheRedis(pixelId, incomingIdentity, resolvedIdentity) {
|
|
169
174
|
try {
|
|
170
175
|
if (!pixelId) {
|
|
171
176
|
return;
|
|
172
177
|
}
|
|
173
|
-
const
|
|
178
|
+
const deleteCacheCommands = [];
|
|
174
179
|
if (incomingIdentity?.traits?.emails && incomingIdentity?.traits?.emails?.length > 0) {
|
|
175
|
-
|
|
180
|
+
const cmds = incomingIdentity.traits.emails.map(email => ({
|
|
181
|
+
cacheKey: `identEmail_${pixelId}_${email}`,
|
|
182
|
+
commandType: 'delete',
|
|
183
|
+
}));
|
|
184
|
+
deleteCacheCommands.push(...cmds);
|
|
176
185
|
}
|
|
177
186
|
if (incomingIdentity?.traits?.userIds && incomingIdentity?.traits?.userIds.length > 0) {
|
|
178
|
-
|
|
187
|
+
const cmds = incomingIdentity.traits.userIds.map(userId => ({
|
|
188
|
+
cacheKey: `identUserId_${pixelId}_${userId}`,
|
|
189
|
+
commandType: 'delete',
|
|
190
|
+
}));
|
|
191
|
+
deleteCacheCommands.push(...cmds);
|
|
179
192
|
}
|
|
180
193
|
if (incomingIdentity?.identityId) {
|
|
181
|
-
|
|
194
|
+
deleteCacheCommands.push({
|
|
195
|
+
cacheKey: `identId_${pixelId}_${incomingIdentity.identityId}`,
|
|
196
|
+
commandType: 'delete',
|
|
197
|
+
});
|
|
182
198
|
}
|
|
183
199
|
if (resolvedIdentity?.traits?.emails && resolvedIdentity?.traits?.emails.length > 0) {
|
|
184
|
-
|
|
200
|
+
const cmds = resolvedIdentity.traits.emails.map(email => ({
|
|
201
|
+
cacheKey: `identEmail_${pixelId}_${email}`,
|
|
202
|
+
commandType: 'delete',
|
|
203
|
+
}));
|
|
204
|
+
deleteCacheCommands.push(...cmds);
|
|
185
205
|
}
|
|
186
206
|
if (resolvedIdentity?.traits?.userIds && resolvedIdentity?.traits?.userIds.length > 0) {
|
|
187
|
-
|
|
207
|
+
const cmds = resolvedIdentity.traits.userIds.map(userId => ({
|
|
208
|
+
cacheKey: `identUserId_${pixelId}_${userId}`,
|
|
209
|
+
commandType: 'delete',
|
|
210
|
+
}));
|
|
211
|
+
deleteCacheCommands.push(...cmds);
|
|
188
212
|
}
|
|
189
213
|
if (resolvedIdentity?.identityId) {
|
|
190
|
-
|
|
214
|
+
deleteCacheCommands.push({
|
|
215
|
+
cacheKey: `identId_${pixelId}_${resolvedIdentity.identityId}`,
|
|
216
|
+
commandType: 'delete',
|
|
217
|
+
});
|
|
191
218
|
}
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
await this.redisClient.del(keysToDelete[i]);
|
|
195
|
-
}
|
|
219
|
+
if (deleteCacheCommands.length > 0) {
|
|
220
|
+
await this.cacheLambdaClient.batchInvoke(deleteCacheCommands);
|
|
196
221
|
}
|
|
197
222
|
}
|
|
198
223
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"identity-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-db-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IPDataResponse } from '@adtrackify/at-tracking-event-types';
|
|
2
|
+
import { CacheLambdaClient } from '../clients';
|
|
2
3
|
export interface IPLookupTableRecord {
|
|
3
4
|
ipAddress: string;
|
|
4
5
|
lookupResponse: IPDataResponse | null;
|
|
@@ -6,5 +7,11 @@ export interface IPLookupTableRecord {
|
|
|
6
7
|
updatedAt: string;
|
|
7
8
|
expiresAt?: number;
|
|
8
9
|
}
|
|
9
|
-
export declare
|
|
10
|
-
|
|
10
|
+
export declare class IpDataLookupService {
|
|
11
|
+
private cacheLambdaFunctionArn;
|
|
12
|
+
cacheLambdaClient: CacheLambdaClient;
|
|
13
|
+
constructor(cacheLambdaFunctionArn: string);
|
|
14
|
+
getLookupApi: (ipAddress: string) => Promise<IPDataResponse | null>;
|
|
15
|
+
getIpCache: (ipAddress: string) => Promise<import("../clients").CacheRequestCommandResponse | undefined>;
|
|
16
|
+
lookupIP: (ipAddress: string) => Promise<IPDataResponse | null>;
|
|
17
|
+
}
|
|
@@ -1,88 +1,68 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
-
import { axiosHttpService,
|
|
2
|
+
import { axiosHttpService, CacheLambdaClient } from '../clients';
|
|
3
3
|
import { Logger } from '../helpers';
|
|
4
4
|
import { getCurrentTimestamp } from '../libs';
|
|
5
5
|
import { isIP } from 'net';
|
|
6
6
|
const API_KEY = 'aae45f1e1f97ecf79bdc2bef3e96ef71961c4cb977c3085429b421bc';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return res?.data;
|
|
7
|
+
export class IpDataLookupService {
|
|
8
|
+
cacheLambdaFunctionArn;
|
|
9
|
+
cacheLambdaClient;
|
|
10
|
+
constructor(cacheLambdaFunctionArn) {
|
|
11
|
+
this.cacheLambdaFunctionArn = cacheLambdaFunctionArn;
|
|
12
|
+
this.cacheLambdaClient = new CacheLambdaClient(cacheLambdaFunctionArn);
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
try {
|
|
22
|
-
if (!ipAddress || isIP(ipAddress) === 0) {
|
|
23
|
-
Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
|
|
24
|
-
return null;
|
|
14
|
+
getLookupApi = async (ipAddress) => {
|
|
15
|
+
try {
|
|
16
|
+
const client = axiosHttpService();
|
|
17
|
+
const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
|
|
18
|
+
const res = await client.get(url);
|
|
19
|
+
return res?.data;
|
|
25
20
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return cachedResult.lookupResponse;
|
|
21
|
+
catch (error) {
|
|
22
|
+
Logger.error('IPData Lookup API Failed', { error });
|
|
23
|
+
return null;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const expiresAt = DateTime.now().plus({ days: 15 }).toSeconds();
|
|
41
|
-
lookupTableRecord.expiresAt = expiresAt;
|
|
25
|
+
};
|
|
26
|
+
getIpCache = async (ipAddress) => {
|
|
27
|
+
return this.cacheLambdaClient.invokeGet(`ipdata-${ipAddress}`);
|
|
28
|
+
};
|
|
29
|
+
lookupIP = async (ipAddress) => {
|
|
30
|
+
try {
|
|
31
|
+
if (!ipAddress || isIP(ipAddress) === 0) {
|
|
32
|
+
Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
|
|
33
|
+
return null;
|
|
42
34
|
}
|
|
35
|
+
const cacheResponse = await this.getIpCache(ipAddress);
|
|
36
|
+
const cachedResult = cacheResponse?.responseData;
|
|
37
|
+
const cacheExpirationDate = DateTime.utc().minus({ days: 6 }).toJSDate().toISOString();
|
|
38
|
+
if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
|
|
39
|
+
return cachedResult.lookupResponse;
|
|
40
|
+
}
|
|
41
|
+
const lookupResponse = await this.getLookupApi(ipAddress);
|
|
42
|
+
const expires = 60 * 60 * 24 * 15;
|
|
43
|
+
let lookupTableRecord;
|
|
44
|
+
if (cachedResult) {
|
|
45
|
+
lookupTableRecord = {
|
|
46
|
+
...cachedResult,
|
|
47
|
+
lookupResponse,
|
|
48
|
+
updatedAt: getCurrentTimestamp(),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
lookupTableRecord = {
|
|
53
|
+
ipAddress,
|
|
54
|
+
lookupResponse,
|
|
55
|
+
createdAt: getCurrentTimestamp(),
|
|
56
|
+
updatedAt: getCurrentTimestamp()
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
await this.cacheLambdaClient.invokeSet(`ipdata-${ipAddress}`, JSON.stringify(lookupTableRecord), expires);
|
|
60
|
+
return lookupResponse;
|
|
43
61
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
lookupTableRecord = {
|
|
47
|
-
ipAddress,
|
|
48
|
-
lookupResponse,
|
|
49
|
-
createdAt: getCurrentTimestamp(),
|
|
50
|
-
updatedAt: getCurrentTimestamp(),
|
|
51
|
-
expiresAt
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
await DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, lookupTableRecord);
|
|
55
|
-
return lookupResponse;
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
Logger.error('Failed to lookup IP', { error: e });
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
export const updateIPCache = async (ipAddress, data) => {
|
|
63
|
-
try {
|
|
64
|
-
if (!ipAddress || isIP(ipAddress) === 0) {
|
|
65
|
-
Logger.warn('Unable to update IP cache. Invalid Ip Address', { ipAddress, data });
|
|
62
|
+
catch (e) {
|
|
63
|
+
Logger.error('Failed to lookup IP', { error: e });
|
|
66
64
|
return null;
|
|
67
65
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (cachedResult) {
|
|
71
|
-
const updatedLookupResponse = cachedResult?.lookupResponse ?? { asn: {} };
|
|
72
|
-
Object.assign(updatedLookupResponse, data);
|
|
73
|
-
const updatedLookupTableRecord = {
|
|
74
|
-
...cachedResult,
|
|
75
|
-
lookupResponse,
|
|
76
|
-
updatedAt: getCurrentTimestamp()
|
|
77
|
-
};
|
|
78
|
-
lookupResponse = updatedLookupResponse;
|
|
79
|
-
await DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, updatedLookupTableRecord);
|
|
80
|
-
}
|
|
81
|
-
return lookupResponse;
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
Logger.error('Failed to update IP cache', { error });
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
};
|
|
66
|
+
};
|
|
67
|
+
}
|
|
88
68
|
//# sourceMappingURL=ipdata-lookup-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipdata-lookup-service.js","sourceRoot":"","sources":["../../../src/services/ipdata-lookup-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"ipdata-lookup-service.js","sourceRoot":"","sources":["../../../src/services/ipdata-lookup-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adtrackify/at-service-common",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.81",
|
|
4
4
|
"description": "",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/*"
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@adtrackify/at-shared-utils": "^3.0.33",
|
|
39
|
+
"@aws-sdk/util-utf8": "^3.374.0",
|
|
39
40
|
"ioredis": "^5.4.1",
|
|
40
41
|
"pako": "^2.1.0",
|
|
41
42
|
"shopify-api-node": "^3.12.7"
|