@bprotsyk/aso-core 1.2.198 → 1.2.200
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/lib/network/keitaro/keitaro-service.d.ts +2 -0
- package/lib/network/keitaro/keitaro-service.js +25 -1
- package/lib/utils/general.js +12 -15
- package/lib/utils/keitaro-utils.d.ts +1 -0
- package/lib/utils/keitaro-utils.js +21 -2
- package/package.json +1 -1
- package/src/network/keitaro/keitaro-service.ts +33 -1
- package/src/utils/general.ts +22 -29
- package/src/utils/keitaro-utils.ts +24 -1
|
@@ -15,6 +15,7 @@ declare function createCampaign(campaignData: Partial<IKeitaroCampaign>): Promis
|
|
|
15
15
|
declare function getCampaignById(id: number): Promise<IKeitaroCampaign>;
|
|
16
16
|
export declare function upsertStreamToCampaign(campaign: IKeitaroCampaign, stream: Partial<IKeitaroStream>): Promise<void>;
|
|
17
17
|
declare function cloneOWCampaign(app: IFlashApp): Promise<IKeitaroCampaign>;
|
|
18
|
+
declare function cloneDCampaign(app: IFlashApp): Promise<IKeitaroCampaign>;
|
|
18
19
|
declare function changeCampaignsGroup(fromId: number, toId: number, exceptForCampaignIds: number[]): Promise<void>;
|
|
19
20
|
declare function getDomains(onlyActive?: boolean): Promise<IKeitaroDomain[]>;
|
|
20
21
|
declare function getProfitForTimeRange(from: number, to: number): Promise<number>;
|
|
@@ -36,5 +37,6 @@ export declare const KeitaroService: {
|
|
|
36
37
|
changeCampaignsGroup: typeof changeCampaignsGroup;
|
|
37
38
|
getProfitForTimeRange: typeof getProfitForTimeRange;
|
|
38
39
|
getProfitForTodayAndYesterday: typeof getProfitForTodayAndYesterday;
|
|
40
|
+
cloneDCampaign: typeof cloneDCampaign;
|
|
39
41
|
};
|
|
40
42
|
export {};
|
|
@@ -186,6 +186,30 @@ async function cloneOWCampaign(app) {
|
|
|
186
186
|
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
187
187
|
return campaign;
|
|
188
188
|
}
|
|
189
|
+
async function cloneDCampaign(app) {
|
|
190
|
+
let name = `D #${app.id} (${app.bundle})`;
|
|
191
|
+
let allCampaigns = await getAllCampaigns();
|
|
192
|
+
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`D #${app.id}`));
|
|
193
|
+
if (matchingCampaign.length > 0)
|
|
194
|
+
return matchingCampaign[0];
|
|
195
|
+
const { data: campaigns } = await http_1.default.post(`/campaigns/2693/clone`);
|
|
196
|
+
if (campaigns.length == 0)
|
|
197
|
+
throw Error("Campaign cloning falied");
|
|
198
|
+
let clonedCampaign = campaigns[0];
|
|
199
|
+
let allDomains = await exports.KeitaroService.getDomains(true);
|
|
200
|
+
if (!allDomains) {
|
|
201
|
+
throw Error(`Failed to get all domains list`);
|
|
202
|
+
}
|
|
203
|
+
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
204
|
+
let payload = {
|
|
205
|
+
name: name,
|
|
206
|
+
traffic_source_id: keitaro_utils_1.TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
207
|
+
domain_id: domain.id,
|
|
208
|
+
group_id: 93,
|
|
209
|
+
};
|
|
210
|
+
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
211
|
+
return campaign;
|
|
212
|
+
}
|
|
189
213
|
async function changeCampaignsGroup(fromId, toId, exceptForCampaignIds) {
|
|
190
214
|
let campaigns = await getAllCampaigns();
|
|
191
215
|
const matchingCampaigns = campaigns.filter(campaign => campaign.group_id == fromId && !exceptForCampaignIds.includes(campaign.id));
|
|
@@ -222,5 +246,5 @@ async function getProfitForTodayAndYesterday() {
|
|
|
222
246
|
}
|
|
223
247
|
exports.KeitaroService = {
|
|
224
248
|
getStreamsByCampaignId, updateCampaign, getAllCampaigns, getAllOffers, cloneStreams, addOfferToKeitaro, getOfferByKeitaroId, getDomains, createCampaign, getCampaignById, upsertStreamToCampaign, cloneOWCampaign,
|
|
225
|
-
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday
|
|
249
|
+
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday, cloneDCampaign
|
|
226
250
|
};
|
package/lib/utils/general.js
CHANGED
|
@@ -10,25 +10,22 @@ function convertMillisToDate(millis) {
|
|
|
10
10
|
}
|
|
11
11
|
exports.convertMillisToDate = convertMillisToDate;
|
|
12
12
|
function getTimestampsForTodayAndYesterday() {
|
|
13
|
-
const
|
|
14
|
-
|
|
13
|
+
const offset = 2;
|
|
14
|
+
const now = new Date(new Date().getTime() + offset * 3600 * 1000);
|
|
15
15
|
const todayStart = new Date(now);
|
|
16
|
-
todayStart.
|
|
17
|
-
const todayStartTimestamp = todayStart.getTime();
|
|
18
|
-
// Today's End (23:59:59.999)
|
|
16
|
+
todayStart.setUTCHours(0, 0, 0, 0);
|
|
17
|
+
const todayStartTimestamp = todayStart.getTime() - offset * 3600 * 1000;
|
|
19
18
|
const todayEnd = new Date(now);
|
|
20
|
-
todayEnd.
|
|
21
|
-
const todayEndTimestamp = todayEnd.getTime();
|
|
22
|
-
// Yesterday's Start (00:00:00)
|
|
19
|
+
todayEnd.setUTCHours(23, 59, 59, 999);
|
|
20
|
+
const todayEndTimestamp = todayEnd.getTime() - offset * 3600 * 1000;
|
|
23
21
|
const yesterdayStart = new Date(now);
|
|
24
|
-
yesterdayStart.
|
|
25
|
-
yesterdayStart.
|
|
26
|
-
const yesterdayStartTimestamp = yesterdayStart.getTime();
|
|
27
|
-
// Yesterday's End (23:59:59.999)
|
|
22
|
+
yesterdayStart.setUTCDate(now.getUTCDate() - 1);
|
|
23
|
+
yesterdayStart.setUTCHours(0, 0, 0, 0);
|
|
24
|
+
const yesterdayStartTimestamp = yesterdayStart.getTime() - offset * 3600 * 1000;
|
|
28
25
|
const yesterdayEnd = new Date(now);
|
|
29
|
-
yesterdayEnd.
|
|
30
|
-
yesterdayEnd.
|
|
31
|
-
const yesterdayEndTimestamp = yesterdayEnd.getTime();
|
|
26
|
+
yesterdayEnd.setUTCDate(now.getUTCDate() - 1);
|
|
27
|
+
yesterdayEnd.setUTCHours(23, 59, 59, 999);
|
|
28
|
+
const yesterdayEndTimestamp = yesterdayEnd.getTime() - offset * 3600 * 1000;
|
|
32
29
|
return {
|
|
33
30
|
today: {
|
|
34
31
|
start: todayStartTimestamp,
|
|
@@ -11,4 +11,5 @@ export declare function createFlashCampaigns(app: IFlashApp): Promise<{
|
|
|
11
11
|
tracking: IKeitaroCampaign;
|
|
12
12
|
redirect: IKeitaroCampaign;
|
|
13
13
|
}>;
|
|
14
|
+
export declare function createDirectCampaign(app: IFlashApp): Promise<IKeitaroCampaign>;
|
|
14
15
|
export declare function createOWCampaign(app: IFlashApp): Promise<IKeitaroCampaign>;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createOWCampaign = exports.createFlashCampaigns = exports.createOWStreamPartialPayload = exports.prepareOWCampaignParameters = exports.createOrFindFlashRedirectCampaign = exports.removeGeosFromAllRedirectCampaigns = exports.addGeosToAllRedirectCampaigns = exports.TRAFFIC_SOURCE_ID_FLASH_AI = void 0;
|
|
6
|
+
exports.createOWCampaign = exports.createDirectCampaign = exports.createFlashCampaigns = exports.createOWStreamPartialPayload = exports.prepareOWCampaignParameters = exports.createOrFindFlashRedirectCampaign = exports.removeGeosFromAllRedirectCampaigns = exports.addGeosToAllRedirectCampaigns = exports.TRAFFIC_SOURCE_ID_FLASH_AI = void 0;
|
|
7
7
|
const keitaro_service_1 = require("../network/keitaro/keitaro-service");
|
|
8
8
|
const sleep_promise_1 = __importDefault(require("sleep-promise"));
|
|
9
9
|
const FLASH_REDIRECT_GROUP_ID = 82;
|
|
@@ -298,6 +298,18 @@ function createBPStreamPartialPayload(app) {
|
|
|
298
298
|
}],
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
|
+
function createDefenceMainStreamPartialPayload(app) {
|
|
302
|
+
return {
|
|
303
|
+
name: "ALL",
|
|
304
|
+
type: "regular",
|
|
305
|
+
action_type: "http",
|
|
306
|
+
action_payload: app.sourceUrl,
|
|
307
|
+
schema: "redirect",
|
|
308
|
+
filter_or: false,
|
|
309
|
+
collect_clicks: true,
|
|
310
|
+
weight: 100,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
301
313
|
function createOWStreamPartialPayload(app) {
|
|
302
314
|
return {
|
|
303
315
|
name: `OW`,
|
|
@@ -320,7 +332,7 @@ async function createFlashCampaigns(app) {
|
|
|
320
332
|
// Upserting Flash Redirect campaign
|
|
321
333
|
let redirectCampaign = await (0, exports.createOrFindFlashRedirectCampaign)(app);
|
|
322
334
|
console.log(`Redirect campaign name:`);
|
|
323
|
-
console.log(`${redirectCampaign.domain}
|
|
335
|
+
console.log(`${redirectCampaign.domain}/${redirectCampaign.alias}?uid=`);
|
|
324
336
|
// Upserting necessary streams
|
|
325
337
|
let botProtectionStream = createBPStreamPartialPayload(app);
|
|
326
338
|
let owStream = createOWStreamPartialPayload(app);
|
|
@@ -335,6 +347,13 @@ async function createFlashCampaigns(app) {
|
|
|
335
347
|
};
|
|
336
348
|
}
|
|
337
349
|
exports.createFlashCampaigns = createFlashCampaigns;
|
|
350
|
+
async function createDirectCampaign(app) {
|
|
351
|
+
let campaign = await keitaro_service_1.KeitaroService.cloneDCampaign(app);
|
|
352
|
+
let stream = createDefenceMainStreamPartialPayload(app);
|
|
353
|
+
await keitaro_service_1.KeitaroService.upsertStreamToCampaign(campaign, stream);
|
|
354
|
+
return campaign;
|
|
355
|
+
}
|
|
356
|
+
exports.createDirectCampaign = createDirectCampaign;
|
|
338
357
|
async function createOWCampaign(app) {
|
|
339
358
|
let owCampaign = await keitaro_service_1.KeitaroService.cloneOWCampaign(app);
|
|
340
359
|
return owCampaign;
|
package/package.json
CHANGED
|
@@ -224,6 +224,38 @@ async function cloneOWCampaign(app: IFlashApp): Promise<IKeitaroCampaign> {
|
|
|
224
224
|
return campaign
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
async function cloneDCampaign(app: IFlashApp): Promise<IKeitaroCampaign> {
|
|
228
|
+
let name = `D #${app.id} (${app.bundle})`
|
|
229
|
+
|
|
230
|
+
let allCampaigns = await getAllCampaigns()
|
|
231
|
+
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`D #${app.id}`))
|
|
232
|
+
if (matchingCampaign.length > 0) return matchingCampaign[0]
|
|
233
|
+
|
|
234
|
+
const { data: campaigns } = await keitaroApi.post(`/campaigns/2693/clone`);
|
|
235
|
+
|
|
236
|
+
if (campaigns.length == 0) throw Error("Campaign cloning falied")
|
|
237
|
+
|
|
238
|
+
let clonedCampaign: IKeitaroCampaign = campaigns[0]
|
|
239
|
+
|
|
240
|
+
let allDomains = await KeitaroService.getDomains(true)
|
|
241
|
+
if (!allDomains) {
|
|
242
|
+
throw Error(`Failed to get all domains list`)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
246
|
+
|
|
247
|
+
let payload: Partial<IKeitaroCampaign> = {
|
|
248
|
+
name: name,
|
|
249
|
+
traffic_source_id: TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
250
|
+
domain_id: domain.id,
|
|
251
|
+
group_id: 93,
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
const { data: campaign } = await keitaroApi.put(`/campaigns/${clonedCampaign.id}`, payload)
|
|
255
|
+
|
|
256
|
+
return campaign
|
|
257
|
+
}
|
|
258
|
+
|
|
227
259
|
async function changeCampaignsGroup(fromId: number, toId: number, exceptForCampaignIds: number[]) {
|
|
228
260
|
let campaigns = await getAllCampaigns()
|
|
229
261
|
const matchingCampaigns = campaigns.filter(campaign => campaign.group_id == fromId && !exceptForCampaignIds.includes(campaign.id))
|
|
@@ -268,5 +300,5 @@ async function getProfitForTodayAndYesterday(): Promise<any> {
|
|
|
268
300
|
|
|
269
301
|
export const KeitaroService = {
|
|
270
302
|
getStreamsByCampaignId, updateCampaign, getAllCampaigns, getAllOffers, cloneStreams, addOfferToKeitaro, getOfferByKeitaroId, getDomains, createCampaign, getCampaignById, upsertStreamToCampaign, cloneOWCampaign,
|
|
271
|
-
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday
|
|
303
|
+
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday, cloneDCampaign
|
|
272
304
|
}
|
package/src/utils/general.ts
CHANGED
|
@@ -1,35 +1,28 @@
|
|
|
1
1
|
export function convertMillisToDate(millis: number): string {
|
|
2
|
-
const date = new Date(millis)
|
|
3
|
-
const year = date.getFullYear()
|
|
4
|
-
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
|
5
|
-
const day = date.getDate().toString().padStart(2, '0')
|
|
6
|
-
return `${year}-${month}-${day}
|
|
2
|
+
const date = new Date(millis)
|
|
3
|
+
const year = date.getFullYear()
|
|
4
|
+
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
|
5
|
+
const day = date.getDate().toString().padStart(2, '0')
|
|
6
|
+
return `${year}-${month}-${day}`
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export function getTimestampsForTodayAndYesterday() {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
todayStart.
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const yesterdayStartTimestamp = yesterdayStart.getTime();
|
|
27
|
-
|
|
28
|
-
// Yesterday's End (23:59:59.999)
|
|
29
|
-
const yesterdayEnd = new Date(now);
|
|
30
|
-
yesterdayEnd.setDate(now.getDate() - 1);
|
|
31
|
-
yesterdayEnd.setHours(23, 59, 59, 999);
|
|
32
|
-
const yesterdayEndTimestamp = yesterdayEnd.getTime();
|
|
10
|
+
const offset = 2
|
|
11
|
+
const now = new Date(new Date().getTime() + offset * 3600 * 1000)
|
|
12
|
+
const todayStart = new Date(now)
|
|
13
|
+
todayStart.setUTCHours(0, 0, 0, 0)
|
|
14
|
+
const todayStartTimestamp = todayStart.getTime() - offset * 3600 * 1000
|
|
15
|
+
const todayEnd = new Date(now)
|
|
16
|
+
todayEnd.setUTCHours(23, 59, 59, 999)
|
|
17
|
+
const todayEndTimestamp = todayEnd.getTime() - offset * 3600 * 1000
|
|
18
|
+
const yesterdayStart = new Date(now)
|
|
19
|
+
yesterdayStart.setUTCDate(now.getUTCDate() - 1)
|
|
20
|
+
yesterdayStart.setUTCHours(0, 0, 0, 0)
|
|
21
|
+
const yesterdayStartTimestamp = yesterdayStart.getTime() - offset * 3600 * 1000
|
|
22
|
+
const yesterdayEnd = new Date(now)
|
|
23
|
+
yesterdayEnd.setUTCDate(now.getUTCDate() - 1)
|
|
24
|
+
yesterdayEnd.setUTCHours(23, 59, 59, 999)
|
|
25
|
+
const yesterdayEndTimestamp = yesterdayEnd.getTime() - offset * 3600 * 1000
|
|
33
26
|
|
|
34
27
|
return {
|
|
35
28
|
today: {
|
|
@@ -40,5 +33,5 @@ export function getTimestampsForTodayAndYesterday() {
|
|
|
40
33
|
start: yesterdayStartTimestamp,
|
|
41
34
|
end: yesterdayEndTimestamp,
|
|
42
35
|
},
|
|
43
|
-
}
|
|
36
|
+
}
|
|
44
37
|
}
|
|
@@ -324,6 +324,19 @@ function createBPStreamPartialPayload(app: IFlashApp): Partial<IKeitaroStream> {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
+
function createDefenceMainStreamPartialPayload(app: IFlashApp): Partial<IKeitaroStream> {
|
|
328
|
+
return {
|
|
329
|
+
name: "ALL",
|
|
330
|
+
type: "regular",
|
|
331
|
+
action_type: "http",
|
|
332
|
+
action_payload: app.sourceUrl,
|
|
333
|
+
schema: "redirect",
|
|
334
|
+
filter_or: false,
|
|
335
|
+
collect_clicks: true,
|
|
336
|
+
weight: 100,
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
327
340
|
export function createOWStreamPartialPayload(app: IFlashApp): Partial<IKeitaroStream> {
|
|
328
341
|
return {
|
|
329
342
|
name: `OW`,
|
|
@@ -346,7 +359,7 @@ export async function createFlashCampaigns(app: IFlashApp) {
|
|
|
346
359
|
// Upserting Flash Redirect campaign
|
|
347
360
|
let redirectCampaign = await createOrFindFlashRedirectCampaign(app)
|
|
348
361
|
console.log(`Redirect campaign name:`)
|
|
349
|
-
console.log(`${redirectCampaign.domain}
|
|
362
|
+
console.log(`${redirectCampaign.domain}/${redirectCampaign.alias}?uid=`)
|
|
350
363
|
|
|
351
364
|
// Upserting necessary streams
|
|
352
365
|
let botProtectionStream = createBPStreamPartialPayload(app)
|
|
@@ -365,6 +378,16 @@ export async function createFlashCampaigns(app: IFlashApp) {
|
|
|
365
378
|
}
|
|
366
379
|
}
|
|
367
380
|
|
|
381
|
+
export async function createDirectCampaign(app: IFlashApp) {
|
|
382
|
+
let campaign = await KeitaroService.cloneDCampaign(app)
|
|
383
|
+
|
|
384
|
+
let stream = createDefenceMainStreamPartialPayload(app)
|
|
385
|
+
|
|
386
|
+
await KeitaroService.upsertStreamToCampaign(campaign, stream)
|
|
387
|
+
|
|
388
|
+
return campaign
|
|
389
|
+
}
|
|
390
|
+
|
|
368
391
|
export async function createOWCampaign(app: IFlashApp) {
|
|
369
392
|
let owCampaign = await KeitaroService.cloneOWCampaign(app)
|
|
370
393
|
|