@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.
@@ -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
  };
@@ -10,25 +10,22 @@ function convertMillisToDate(millis) {
10
10
  }
11
11
  exports.convertMillisToDate = convertMillisToDate;
12
12
  function getTimestampsForTodayAndYesterday() {
13
- const now = new Date();
14
- // Today's Start (00:00:00)
13
+ const offset = 2;
14
+ const now = new Date(new Date().getTime() + offset * 3600 * 1000);
15
15
  const todayStart = new Date(now);
16
- todayStart.setHours(0, 0, 0, 0);
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.setHours(23, 59, 59, 999);
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.setDate(now.getDate() - 1);
25
- yesterdayStart.setHours(0, 0, 0, 0);
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.setDate(now.getDate() - 1);
30
- yesterdayEnd.setHours(23, 59, 59, 999);
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}${redirectCampaign.alias}?uid=`);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bprotsyk/aso-core",
3
- "version": "1.2.198",
3
+ "version": "1.2.200",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "scripts": {
@@ -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
  }
@@ -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 now = new Date();
11
-
12
- // Today's Start (00:00:00)
13
- const todayStart = new Date(now);
14
- todayStart.setHours(0, 0, 0, 0);
15
- const todayStartTimestamp = todayStart.getTime();
16
-
17
- // Today's End (23:59:59.999)
18
- const todayEnd = new Date(now);
19
- todayEnd.setHours(23, 59, 59, 999);
20
- const todayEndTimestamp = todayEnd.getTime();
21
-
22
- // Yesterday's Start (00:00:00)
23
- const yesterdayStart = new Date(now);
24
- yesterdayStart.setDate(now.getDate() - 1);
25
- yesterdayStart.setHours(0, 0, 0, 0);
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}${redirectCampaign.alias}?uid=`)
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