@adtrackify/at-service-common 3.0.75 → 3.0.77

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.
@@ -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 const lookupIP: (ipAddress: string) => Promise<IPDataResponse | null>;
10
- export declare const updateIPCache: (ipAddress: string, data: IPDataResponse) => Promise<IPDataResponse | null>;
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,93 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateIPCache = exports.lookupIP = void 0;
3
+ exports.IpDataLookupService = void 0;
4
4
  const luxon_1 = require("luxon");
5
5
  const clients_1 = require("../clients");
6
6
  const helpers_1 = require("../helpers");
7
7
  const libs_1 = require("../libs");
8
8
  const net_1 = require("net");
9
9
  const API_KEY = 'aae45f1e1f97ecf79bdc2bef3e96ef71961c4cb977c3085429b421bc';
10
- const IP_LOOKUP_TABLE_NAME = process.env.IP_LOOKUP_TABLE_NAME;
11
- const getLookupApi = async (ipAddress) => {
12
- try {
13
- const client = (0, clients_1.axiosHttpService)();
14
- const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
15
- const res = await client.get(url);
16
- return res?.data;
10
+ class IpDataLookupService {
11
+ cacheLambdaFunctionArn;
12
+ cacheLambdaClient;
13
+ constructor(cacheLambdaFunctionArn) {
14
+ this.cacheLambdaFunctionArn = cacheLambdaFunctionArn;
15
+ this.cacheLambdaClient = new clients_1.CacheLambdaClient(cacheLambdaFunctionArn);
17
16
  }
18
- catch (error) {
19
- helpers_1.Logger.error('IPData Lookup API Failed', { error });
20
- return null;
21
- }
22
- };
23
- const lookupIP = async (ipAddress) => {
24
- try {
25
- if (!ipAddress || (0, net_1.isIP)(ipAddress) === 0) {
26
- helpers_1.Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
27
- return null;
17
+ getLookupApi = async (ipAddress) => {
18
+ try {
19
+ const client = (0, clients_1.axiosHttpService)();
20
+ const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
21
+ const res = await client.get(url);
22
+ return res?.data;
28
23
  }
29
- const cachedResult = await clients_1.DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
30
- const cacheExpirationDate = luxon_1.DateTime.utc().minus({ days: 6 }).toJSDate().toISOString();
31
- if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
32
- return cachedResult.lookupResponse;
24
+ catch (error) {
25
+ helpers_1.Logger.error('IPData Lookup API Failed', { error });
26
+ return null;
33
27
  }
34
- const lookupResponse = await getLookupApi(ipAddress);
35
- let lookupTableRecord;
36
- if (cachedResult) {
37
- lookupTableRecord = {
38
- ...cachedResult,
39
- lookupResponse,
40
- updatedAt: (0, libs_1.getCurrentTimestamp)(),
41
- };
42
- if (!cachedResult?.expiresAt) {
28
+ };
29
+ getIpCache = async (ipAddress) => {
30
+ return this.cacheLambdaClient.invokeGet(`ipdata-${ipAddress}`);
31
+ };
32
+ lookupIP = async (ipAddress) => {
33
+ try {
34
+ const expiresAt = luxon_1.DateTime.now().plus({ days: 15 }).toSeconds();
35
+ if (!ipAddress || (0, net_1.isIP)(ipAddress) === 0) {
36
+ helpers_1.Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
37
+ return null;
38
+ }
39
+ const cacheResponse = await this.getIpCache(ipAddress);
40
+ const cachedResult = cacheResponse?.responseData;
41
+ const cacheExpirationDate = luxon_1.DateTime.utc().minus({ days: 6 }).toJSDate().toISOString();
42
+ if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
43
+ return cachedResult.lookupResponse;
44
+ }
45
+ const lookupResponse = await this.getLookupApi(ipAddress);
46
+ let lookupTableRecord;
47
+ if (cachedResult) {
48
+ lookupTableRecord = {
49
+ ...cachedResult,
50
+ lookupResponse,
51
+ updatedAt: (0, libs_1.getCurrentTimestamp)(),
52
+ };
53
+ if (!cachedResult?.expiresAt) {
54
+ const expiresAt = luxon_1.DateTime.now().plus({ days: 15 }).toSeconds();
55
+ lookupTableRecord.expiresAt = expiresAt;
56
+ }
57
+ }
58
+ else {
43
59
  const expiresAt = luxon_1.DateTime.now().plus({ days: 15 }).toSeconds();
44
- lookupTableRecord.expiresAt = expiresAt;
60
+ lookupTableRecord = {
61
+ ipAddress,
62
+ lookupResponse,
63
+ createdAt: (0, libs_1.getCurrentTimestamp)(),
64
+ updatedAt: (0, libs_1.getCurrentTimestamp)(),
65
+ expiresAt
66
+ };
45
67
  }
68
+ await this.cacheLambdaClient.invokeSet(`ipdata-${ipAddress}`, JSON.stringify(lookupTableRecord), expiresAt);
69
+ return lookupResponse;
46
70
  }
47
- else {
48
- const expiresAt = luxon_1.DateTime.now().plus({ days: 15 }).toSeconds();
49
- lookupTableRecord = {
50
- ipAddress,
51
- lookupResponse,
52
- createdAt: (0, libs_1.getCurrentTimestamp)(),
53
- updatedAt: (0, libs_1.getCurrentTimestamp)(),
54
- expiresAt
55
- };
56
- }
57
- await clients_1.DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, lookupTableRecord);
58
- return lookupResponse;
59
- }
60
- catch (e) {
61
- helpers_1.Logger.error('Failed to lookup IP', { error: e });
62
- return null;
63
- }
64
- };
65
- exports.lookupIP = lookupIP;
66
- const updateIPCache = async (ipAddress, data) => {
67
- try {
68
- if (!ipAddress || (0, net_1.isIP)(ipAddress) === 0) {
69
- helpers_1.Logger.warn('Unable to update IP cache. Invalid Ip Address', { ipAddress, data });
71
+ catch (e) {
72
+ helpers_1.Logger.error('Failed to lookup IP', { error: e });
70
73
  return null;
71
74
  }
72
- const cachedResult = await clients_1.DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
73
- let lookupResponse = cachedResult?.lookupResponse;
74
- if (cachedResult) {
75
- const updatedLookupResponse = cachedResult?.lookupResponse ?? { asn: {} };
76
- Object.assign(updatedLookupResponse, data);
77
- const updatedLookupTableRecord = {
78
- ...cachedResult,
79
- lookupResponse,
80
- updatedAt: (0, libs_1.getCurrentTimestamp)()
81
- };
82
- lookupResponse = updatedLookupResponse;
83
- await clients_1.DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, updatedLookupTableRecord);
84
- }
85
- return lookupResponse;
86
- }
87
- catch (error) {
88
- helpers_1.Logger.error('Failed to update IP cache', { error });
89
- return null;
90
- }
91
- };
92
- exports.updateIPCache = updateIPCache;
75
+ };
76
+ }
77
+ exports.IpDataLookupService = IpDataLookupService;
93
78
  //# 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":"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"}
1
+ {"version":3,"file":"ipdata-lookup-service.js","sourceRoot":"","sources":["../../../src/services/ipdata-lookup-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 const lookupIP: (ipAddress: string) => Promise<IPDataResponse | null>;
10
- export declare const updateIPCache: (ipAddress: string, data: IPDataResponse) => Promise<IPDataResponse | null>;
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,74 @@
1
1
  import { DateTime } from 'luxon';
2
- import { axiosHttpService, DynamoDbClient } from '../clients';
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
- const IP_LOOKUP_TABLE_NAME = process.env.IP_LOOKUP_TABLE_NAME;
8
- const getLookupApi = async (ipAddress) => {
9
- try {
10
- const client = axiosHttpService();
11
- const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
12
- const res = await client.get(url);
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
- catch (error) {
16
- Logger.error('IPData Lookup API Failed', { error });
17
- return null;
18
- }
19
- };
20
- export const lookupIP = async (ipAddress) => {
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
- const cachedResult = await DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
27
- const cacheExpirationDate = DateTime.utc().minus({ days: 6 }).toJSDate().toISOString();
28
- if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
29
- return cachedResult.lookupResponse;
21
+ catch (error) {
22
+ Logger.error('IPData Lookup API Failed', { error });
23
+ return null;
30
24
  }
31
- const lookupResponse = await getLookupApi(ipAddress);
32
- let lookupTableRecord;
33
- if (cachedResult) {
34
- lookupTableRecord = {
35
- ...cachedResult,
36
- lookupResponse,
37
- updatedAt: getCurrentTimestamp(),
38
- };
39
- if (!cachedResult?.expiresAt) {
25
+ };
26
+ getIpCache = async (ipAddress) => {
27
+ return this.cacheLambdaClient.invokeGet(`ipdata-${ipAddress}`);
28
+ };
29
+ lookupIP = async (ipAddress) => {
30
+ try {
31
+ const expiresAt = DateTime.now().plus({ days: 15 }).toSeconds();
32
+ if (!ipAddress || isIP(ipAddress) === 0) {
33
+ Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
34
+ return null;
35
+ }
36
+ const cacheResponse = await this.getIpCache(ipAddress);
37
+ const cachedResult = cacheResponse?.responseData;
38
+ const cacheExpirationDate = DateTime.utc().minus({ days: 6 }).toJSDate().toISOString();
39
+ if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
40
+ return cachedResult.lookupResponse;
41
+ }
42
+ const lookupResponse = await this.getLookupApi(ipAddress);
43
+ let lookupTableRecord;
44
+ if (cachedResult) {
45
+ lookupTableRecord = {
46
+ ...cachedResult,
47
+ lookupResponse,
48
+ updatedAt: getCurrentTimestamp(),
49
+ };
50
+ if (!cachedResult?.expiresAt) {
51
+ const expiresAt = DateTime.now().plus({ days: 15 }).toSeconds();
52
+ lookupTableRecord.expiresAt = expiresAt;
53
+ }
54
+ }
55
+ else {
40
56
  const expiresAt = DateTime.now().plus({ days: 15 }).toSeconds();
41
- lookupTableRecord.expiresAt = expiresAt;
57
+ lookupTableRecord = {
58
+ ipAddress,
59
+ lookupResponse,
60
+ createdAt: getCurrentTimestamp(),
61
+ updatedAt: getCurrentTimestamp(),
62
+ expiresAt
63
+ };
42
64
  }
65
+ await this.cacheLambdaClient.invokeSet(`ipdata-${ipAddress}`, JSON.stringify(lookupTableRecord), expiresAt);
66
+ return lookupResponse;
43
67
  }
44
- else {
45
- const expiresAt = DateTime.now().plus({ days: 15 }).toSeconds();
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 });
68
+ catch (e) {
69
+ Logger.error('Failed to lookup IP', { error: e });
66
70
  return null;
67
71
  }
68
- const cachedResult = await DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
69
- let lookupResponse = cachedResult?.lookupResponse;
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
- };
72
+ };
73
+ }
88
74
  //# 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":"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"}
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.75",
3
+ "version": "3.0.77",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"