skyeye-svc-common-utils 1.0.85 → 1.0.86
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/lib/sendGridClient.js +35 -18
- package/dist/lib/sendGridClient.js.map +1 -1
- package/dist/utils/appConst.d.ts +3 -0
- package/dist/utils/appConst.js +3 -0
- package/dist/utils/appConst.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/sendGridClient.ts +36 -19
- package/src/utils/appConst.ts +3 -0
|
@@ -16,6 +16,7 @@ const mail_1 = require("@sendgrid/mail");
|
|
|
16
16
|
const client_1 = require("@sendgrid/client");
|
|
17
17
|
const logger_1 = require("./../utils/logger/logger");
|
|
18
18
|
const lodash_1 = require("lodash");
|
|
19
|
+
const appConst_1 = require("../utils/appConst");
|
|
19
20
|
const moment_1 = __importDefault(require("moment"));
|
|
20
21
|
/**
|
|
21
22
|
* A SendGrid client class
|
|
@@ -76,28 +77,44 @@ class SendGridClient {
|
|
|
76
77
|
// as the records are returned in DESC order of lastEventDate, keep update nextLastEventEndDate within the loop
|
|
77
78
|
let nextLastEventEndDate = lastEventEndDate;
|
|
78
79
|
let count = 0;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
let response, body, rateLimitReset = appConst_1.commonAppConst.sendgrid.defaultRateLimitReset;
|
|
81
|
+
while (true) {
|
|
82
|
+
try {
|
|
83
|
+
request.qs = this.getQueryParams(batchSize, lastEventStartDate, nextLastEventEndDate, category, status);
|
|
84
|
+
logger_1.logger.info(`Sending ${method} request to ${baseUrl + url} with body: ${JSON.stringify(request)}`);
|
|
85
|
+
[response, body] = yield this.officialClient.request(request);
|
|
86
|
+
// Check for status code
|
|
87
|
+
if (response.statusCode != 200) {
|
|
88
|
+
throw new Error(`SendGrid request with error, status code: ${response.statusCode}`);
|
|
89
|
+
}
|
|
90
|
+
;
|
|
91
|
+
// Insert into map if not alr exists
|
|
85
92
|
const messages = body.messages;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (!map.has(msg.msg_id)) {
|
|
90
|
-
map.set(msg.msg_id, msg);
|
|
91
|
-
}
|
|
93
|
+
messages.forEach(msg => {
|
|
94
|
+
if (!map.has(msg.msg_id)) {
|
|
95
|
+
map.set(msg.msg_id, msg);
|
|
92
96
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
97
|
+
});
|
|
98
|
+
// Should not continue requesting if the returned data is not >= what we requested
|
|
99
|
+
if (count < batchSize)
|
|
100
|
+
break;
|
|
101
|
+
// The next batch lastEventEndDate should be the last item in the current batch because data returned is sorted in descending order of last_event_time
|
|
102
|
+
nextLastEventEndDate = new Date(messages[messages.length - 1].last_event_time);
|
|
103
|
+
// Update rateLimitReset
|
|
104
|
+
rateLimitReset = response.headers['x-ratelimit-reset'];
|
|
96
105
|
}
|
|
97
|
-
|
|
98
|
-
|
|
106
|
+
catch (error) {
|
|
107
|
+
const sendGridError = error;
|
|
108
|
+
if (sendGridError.code === 429) {
|
|
109
|
+
// if no more quota, wait for next refresh before making new request, to avoid Error 429
|
|
110
|
+
logger_1.logger.info(`Rate limit reached. Waiting for ${rateLimitReset} seconds...`);
|
|
111
|
+
yield new Promise((resolve) => setTimeout(resolve, rateLimitReset * 1000));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
throw new Error(sendGridError.message);
|
|
115
|
+
}
|
|
99
116
|
}
|
|
100
|
-
}
|
|
117
|
+
}
|
|
101
118
|
return Array.from(map.values());
|
|
102
119
|
});
|
|
103
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendGridClient.js","sourceRoot":"","sources":["../../src/lib/sendGridClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yCAA+E;AAC/E,6CAA4D;AAE5D,qDAAkD;AAClD,mCAA+B;
|
|
1
|
+
{"version":3,"file":"sendGridClient.js","sourceRoot":"","sources":["../../src/lib/sendGridClient.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/appConst.d.ts
CHANGED
package/dist/utils/appConst.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appConst.js","sourceRoot":"","sources":["../../src/utils/appConst.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"appConst.js","sourceRoot":"","sources":["../../src/utils/appConst.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ import { Client as OfficialClient } from '@sendgrid/client';
|
|
|
3
3
|
import helpers from '@sendgrid/helpers';
|
|
4
4
|
import { logger } from './../utils/logger/logger';
|
|
5
5
|
import { isNil } from 'lodash';
|
|
6
|
-
import { SendGridEmailFeedStatus } from '../utils/appConst';
|
|
6
|
+
import { commonAppConst, SendGridEmailFeedStatus } from '../utils/appConst';
|
|
7
7
|
import moment from 'moment';
|
|
8
8
|
|
|
9
9
|
export interface ISgMessage {
|
|
@@ -121,29 +121,46 @@ export default class SendGridClient {
|
|
|
121
121
|
// as the records are returned in DESC order of lastEventDate, keep update nextLastEventEndDate within the loop
|
|
122
122
|
let nextLastEventEndDate = lastEventEndDate;
|
|
123
123
|
let count = 0;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
let response: helpers.classes.Response, body: any, rateLimitReset: number = commonAppConst.sendgrid.defaultRateLimitReset;
|
|
125
|
+
while(true) {
|
|
126
|
+
try {
|
|
127
|
+
request.qs = this.getQueryParams(batchSize, lastEventStartDate, nextLastEventEndDate, category, status);
|
|
128
|
+
logger.info(`Sending ${method} request to ${baseUrl + url} with body: ${JSON.stringify(request)}`);
|
|
129
|
+
[ response, body ] = await this.officialClient.request(request);
|
|
130
|
+
// Check for status code
|
|
131
|
+
if (response.statusCode != 200) {
|
|
132
|
+
throw new Error(`SendGrid request with error, status code: ${response.statusCode}`);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Insert into map if not alr exists
|
|
130
136
|
const messages: ISgMessage[] = body.messages;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (!map.has(msg.msg_id)) {
|
|
135
|
-
map.set(msg.msg_id, msg)
|
|
136
|
-
}
|
|
137
|
+
messages.forEach(msg => {
|
|
138
|
+
if (!map.has(msg.msg_id)) {
|
|
139
|
+
map.set(msg.msg_id, msg)
|
|
137
140
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
// Should not continue requesting if the returned data is not >= what we requested
|
|
144
|
+
if (count < batchSize) break;
|
|
145
|
+
|
|
146
|
+
// The next batch lastEventEndDate should be the last item in the current batch because data returned is sorted in descending order of last_event_time
|
|
147
|
+
nextLastEventEndDate = new Date(messages[messages.length - 1].last_event_time);
|
|
148
|
+
|
|
149
|
+
// Update rateLimitReset
|
|
150
|
+
rateLimitReset = response.headers['x-ratelimit-reset'];
|
|
141
151
|
}
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
catch(error) {
|
|
153
|
+
const sendGridError = error as helpers.classes.ResponseError;
|
|
154
|
+
if (sendGridError.code === 429) {
|
|
155
|
+
// if no more quota, wait for next refresh before making new request, to avoid Error 429
|
|
156
|
+
logger.info(`Rate limit reached. Waiting for ${rateLimitReset} seconds...`);
|
|
157
|
+
await new Promise((resolve) => setTimeout(resolve, rateLimitReset * 1000));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
throw new Error(sendGridError.message);
|
|
161
|
+
}
|
|
144
162
|
}
|
|
145
163
|
}
|
|
146
|
-
while (count >= batchSize);
|
|
147
164
|
|
|
148
165
|
return Array.from(map.values());
|
|
149
166
|
}
|