@bprotsyk/aso-core 2.1.103 → 2.1.105
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/app/app.d.ts +10 -1
- package/lib/app/app.js +12 -1
- package/lib/keitaro/keitaro-campaign.d.ts +1 -0
- package/lib/network/keitaro/traffle/traffle-keitaro-service.js +16 -4
- package/package.json +1 -1
- package/src/app/app.ts +13 -2
- package/src/keitaro/keitaro-campaign.ts +1 -0
- package/src/network/keitaro/traffle/traffle-keitaro-service.ts +32 -5
- package/test-keitaro.js +1 -1
package/lib/app/app.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface IApp extends Document {
|
|
|
11
11
|
type: AppType;
|
|
12
12
|
status: AppStatus;
|
|
13
13
|
geo: string[];
|
|
14
|
+
team: ETeam;
|
|
14
15
|
onesignalAppId: string;
|
|
15
16
|
onesignalRestApiKey: string;
|
|
16
17
|
appmetricaApiKey?: string;
|
|
@@ -38,6 +39,10 @@ export declare enum EImageFormat {
|
|
|
38
39
|
JPEG = "jpg",
|
|
39
40
|
WEBP = "webp"
|
|
40
41
|
}
|
|
42
|
+
export declare enum ETeam {
|
|
43
|
+
TRAFFLE = "traffle",
|
|
44
|
+
ELTRAFICO = "eltrafico"
|
|
45
|
+
}
|
|
41
46
|
export declare enum EPlatform {
|
|
42
47
|
GENERAL = "@",
|
|
43
48
|
HUAWEI = "hw",
|
|
@@ -46,7 +51,8 @@ export declare enum EPlatform {
|
|
|
46
51
|
XIAOMI = "xm",
|
|
47
52
|
APKPURE = "ap",
|
|
48
53
|
TELEGRAM = "tg",
|
|
49
|
-
AMAZON = "am"
|
|
54
|
+
AMAZON = "am",
|
|
55
|
+
TEST = "test"
|
|
50
56
|
}
|
|
51
57
|
export declare enum EDirectType {
|
|
52
58
|
KEITARO_OFFER = "keitaroOffer",
|
|
@@ -195,6 +201,7 @@ export declare const AppSchema: mongoose.Schema<any, mongoose.Model<any, any, an
|
|
|
195
201
|
ech: boolean;
|
|
196
202
|
imageFormat: string;
|
|
197
203
|
status: string;
|
|
204
|
+
team: string;
|
|
198
205
|
bundle: string;
|
|
199
206
|
trackingUrl: string;
|
|
200
207
|
integrationVersion: string;
|
|
@@ -237,6 +244,7 @@ export declare const AppSchema: mongoose.Schema<any, mongoose.Model<any, any, an
|
|
|
237
244
|
ech: boolean;
|
|
238
245
|
imageFormat: string;
|
|
239
246
|
status: string;
|
|
247
|
+
team: string;
|
|
240
248
|
bundle: string;
|
|
241
249
|
trackingUrl: string;
|
|
242
250
|
integrationVersion: string;
|
|
@@ -279,6 +287,7 @@ export declare const AppSchema: mongoose.Schema<any, mongoose.Model<any, any, an
|
|
|
279
287
|
ech: boolean;
|
|
280
288
|
imageFormat: string;
|
|
281
289
|
status: string;
|
|
290
|
+
team: string;
|
|
282
291
|
bundle: string;
|
|
283
292
|
trackingUrl: string;
|
|
284
293
|
integrationVersion: string;
|
package/lib/app/app.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AppSchema = exports.PlugType = exports.IntegrationVersion = exports.AppStatus = exports.getPlatformName = exports.EDirectType = exports.EPlatform = exports.EImageFormat = void 0;
|
|
3
|
+
exports.AppSchema = exports.PlugType = exports.IntegrationVersion = exports.AppStatus = exports.getPlatformName = exports.EDirectType = exports.EPlatform = exports.ETeam = exports.EImageFormat = void 0;
|
|
4
4
|
const app_type_1 = require("./app-type");
|
|
5
5
|
const mongoose_1 = require("mongoose");
|
|
6
6
|
const util = require("util");
|
|
@@ -10,6 +10,11 @@ var EImageFormat;
|
|
|
10
10
|
EImageFormat["JPEG"] = "jpg";
|
|
11
11
|
EImageFormat["WEBP"] = "webp";
|
|
12
12
|
})(EImageFormat = exports.EImageFormat || (exports.EImageFormat = {}));
|
|
13
|
+
var ETeam;
|
|
14
|
+
(function (ETeam) {
|
|
15
|
+
ETeam["TRAFFLE"] = "traffle";
|
|
16
|
+
ETeam["ELTRAFICO"] = "eltrafico";
|
|
17
|
+
})(ETeam = exports.ETeam || (exports.ETeam = {}));
|
|
13
18
|
var EPlatform;
|
|
14
19
|
(function (EPlatform) {
|
|
15
20
|
EPlatform["GENERAL"] = "@";
|
|
@@ -20,6 +25,7 @@ var EPlatform;
|
|
|
20
25
|
EPlatform["APKPURE"] = "ap";
|
|
21
26
|
EPlatform["TELEGRAM"] = "tg";
|
|
22
27
|
EPlatform["AMAZON"] = "am";
|
|
28
|
+
EPlatform["TEST"] = "test";
|
|
23
29
|
})(EPlatform = exports.EPlatform || (exports.EPlatform = {}));
|
|
24
30
|
var EDirectType;
|
|
25
31
|
(function (EDirectType) {
|
|
@@ -104,6 +110,11 @@ exports.AppSchema = new mongoose_1.Schema({
|
|
|
104
110
|
enum: AppStatus,
|
|
105
111
|
default: AppStatus.INACTIVE
|
|
106
112
|
},
|
|
113
|
+
team: {
|
|
114
|
+
type: String,
|
|
115
|
+
enum: ETeam,
|
|
116
|
+
default: ETeam.ELTRAFICO
|
|
117
|
+
},
|
|
107
118
|
bundle: {
|
|
108
119
|
type: String,
|
|
109
120
|
unique: true,
|
|
@@ -28,6 +28,11 @@ async function getTraffleOffersGroups() {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
async function createGroup(name, type) {
|
|
31
|
+
let allGroups = await http_1.default.get(`/groups?type=${type}`);
|
|
32
|
+
let existingGroup = allGroups.data.find((group) => group.name == name);
|
|
33
|
+
if (existingGroup) {
|
|
34
|
+
return existingGroup;
|
|
35
|
+
}
|
|
31
36
|
try {
|
|
32
37
|
const response = await http_1.default.post('/groups', {
|
|
33
38
|
name: name,
|
|
@@ -221,8 +226,10 @@ async function cloneTraffleCampaign(app, platform, addDefaultStreams) {
|
|
|
221
226
|
return hasId && hasBundle && noPlatformAtEnd;
|
|
222
227
|
});
|
|
223
228
|
}
|
|
229
|
+
const group = await createGroup(app.id.toString(), "campaigns");
|
|
224
230
|
const originalCampaign = await getCampaignById(ORIGINAL_CLONE_CAMPAIGN_ID);
|
|
225
231
|
const maxPosition = Math.max(...allCampaigns.map(c => c.position || 0));
|
|
232
|
+
console.log(`originalCampaign`, originalCampaign);
|
|
226
233
|
let allDomains = await getDomains(true);
|
|
227
234
|
if (!allDomains) {
|
|
228
235
|
throw Error(`Failed to get all domains list`);
|
|
@@ -284,6 +291,11 @@ async function cloneTraffleCampaign(app, platform, addDefaultStreams) {
|
|
|
284
291
|
name: "bot",
|
|
285
292
|
mode: "accept",
|
|
286
293
|
payload: null
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: 'proxy',
|
|
297
|
+
mode: 'accept',
|
|
298
|
+
payload: null
|
|
287
299
|
}
|
|
288
300
|
],
|
|
289
301
|
offers: []
|
|
@@ -314,17 +326,19 @@ async function cloneTraffleCampaign(app, platform, addDefaultStreams) {
|
|
|
314
326
|
}
|
|
315
327
|
}
|
|
316
328
|
}
|
|
329
|
+
console.log(existingCampaign);
|
|
317
330
|
return existingCampaign;
|
|
318
331
|
}
|
|
319
332
|
// Створення нової кампанії
|
|
320
333
|
let alias = generateAlias();
|
|
334
|
+
console.log(group);
|
|
321
335
|
let payload = {
|
|
322
336
|
// Унікальні поля
|
|
323
337
|
name: platformName ? platformCampaignName : name,
|
|
324
338
|
alias: alias,
|
|
325
339
|
domain_id: originalCampaign.domain_id,
|
|
326
340
|
position: [maxPosition + 100],
|
|
327
|
-
group_id:
|
|
341
|
+
group_id: group.id,
|
|
328
342
|
traffic_source_id: 17,
|
|
329
343
|
parameters: (parameters ? parameters.parameters : originalCampaign.parameters),
|
|
330
344
|
source: originalCampaign.source,
|
|
@@ -341,6 +355,7 @@ async function cloneTraffleCampaign(app, platform, addDefaultStreams) {
|
|
|
341
355
|
collect_clicks: originalCampaign.collect_clicks,
|
|
342
356
|
uniqueness_type: originalCampaign.uniqueness_type,
|
|
343
357
|
};
|
|
358
|
+
console.log(`payload`, payload);
|
|
344
359
|
const newCampaign = await createCampaign(payload);
|
|
345
360
|
// Спочатку створюємо CLO потік з оновленими гео
|
|
346
361
|
await updateOrCreateCLOStream(newCampaign.id);
|
|
@@ -350,9 +365,6 @@ async function cloneTraffleCampaign(app, platform, addDefaultStreams) {
|
|
|
350
365
|
continue; // Пропускаємо CLO потік
|
|
351
366
|
await createStreamWithoutIds(stream, newCampaign.id);
|
|
352
367
|
}
|
|
353
|
-
await http_1.default.put(`/campaigns/${newCampaign.id}`, {
|
|
354
|
-
group_id: originalCampaign.group_id
|
|
355
|
-
});
|
|
356
368
|
const updatedCampaign = await getCampaignById(newCampaign.id);
|
|
357
369
|
return updatedCampaign;
|
|
358
370
|
}
|
package/package.json
CHANGED
package/src/app/app.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface IApp extends Document {
|
|
|
16
16
|
type: AppType
|
|
17
17
|
status: AppStatus
|
|
18
18
|
geo: string[]
|
|
19
|
-
|
|
19
|
+
team: ETeam
|
|
20
20
|
onesignalAppId: string
|
|
21
21
|
onesignalRestApiKey: string
|
|
22
22
|
|
|
@@ -49,6 +49,11 @@ export enum EImageFormat {
|
|
|
49
49
|
WEBP = "webp"
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
export enum ETeam {
|
|
53
|
+
TRAFFLE = 'traffle',
|
|
54
|
+
ELTRAFICO = 'eltrafico'
|
|
55
|
+
}
|
|
56
|
+
|
|
52
57
|
export enum EPlatform {
|
|
53
58
|
GENERAL = '@',
|
|
54
59
|
HUAWEI = 'hw',
|
|
@@ -57,7 +62,8 @@ export enum EPlatform {
|
|
|
57
62
|
XIAOMI = 'xm',
|
|
58
63
|
APKPURE = 'ap',
|
|
59
64
|
TELEGRAM = 'tg',
|
|
60
|
-
AMAZON = 'am'
|
|
65
|
+
AMAZON = 'am',
|
|
66
|
+
TEST = 'test'
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
export enum EDirectType{
|
|
@@ -274,6 +280,11 @@ export const AppSchema = new Schema({
|
|
|
274
280
|
enum: AppStatus,
|
|
275
281
|
default: AppStatus.INACTIVE
|
|
276
282
|
},
|
|
283
|
+
team: {
|
|
284
|
+
type: String,
|
|
285
|
+
enum: ETeam,
|
|
286
|
+
default: ETeam.ELTRAFICO
|
|
287
|
+
},
|
|
277
288
|
|
|
278
289
|
bundle: {
|
|
279
290
|
type: String,
|
|
@@ -63,6 +63,14 @@ async function getTraffleOffersGroups(): Promise<any[]> {
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
async function createGroup(name: string, type: "campaigns" | "offers" | "landings" | "domains"): Promise<{ id: number, name: string, position: number, type: string }> {
|
|
66
|
+
|
|
67
|
+
let allGroups = await keitaroApi.get(`/groups?type=${type}`)
|
|
68
|
+
let existingGroup = allGroups.data.find((group: any) => group.name == name)
|
|
69
|
+
|
|
70
|
+
if (existingGroup) {
|
|
71
|
+
return existingGroup;
|
|
72
|
+
}
|
|
73
|
+
|
|
66
74
|
try {
|
|
67
75
|
const response = await keitaroApi.post('/groups', {
|
|
68
76
|
name: name,
|
|
@@ -245,6 +253,8 @@ async function TrafleKeitaroParameters(parameters: any) {
|
|
|
245
253
|
}
|
|
246
254
|
}
|
|
247
255
|
|
|
256
|
+
|
|
257
|
+
|
|
248
258
|
async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultStreams?: boolean): Promise<IKeitaroCampaign | any> {
|
|
249
259
|
|
|
250
260
|
const ORIGINAL_CLONE_CAMPAIGN_ID = 1925;
|
|
@@ -294,9 +304,13 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
294
304
|
|
|
295
305
|
|
|
296
306
|
|
|
307
|
+
const group = await createGroup(app.id.toString(), "campaigns")
|
|
308
|
+
|
|
297
309
|
const originalCampaign: IKeitaroCampaign = await getCampaignById(ORIGINAL_CLONE_CAMPAIGN_ID);
|
|
298
310
|
const maxPosition = Math.max(...allCampaigns.map(c => c.position || 0));
|
|
299
311
|
|
|
312
|
+
console.log(`originalCampaign`,originalCampaign)
|
|
313
|
+
|
|
300
314
|
let allDomains = await getDomains(true);
|
|
301
315
|
if (!allDomains) {
|
|
302
316
|
throw Error(`Failed to get all domains list`);
|
|
@@ -306,6 +320,7 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
306
320
|
const maxGroupId = Math.max(...allCampaigns.map(c => c.group_id || 0));
|
|
307
321
|
const originalStreams = await getStreamsByCampaignId(ORIGINAL_CLONE_CAMPAIGN_ID);
|
|
308
322
|
|
|
323
|
+
|
|
309
324
|
let parameters = await TrafleKeitaroParameters({bundle: app.bundle, appsflyerDevKey: app.platforms[platform].appsflyerParams?.apiToken, name: name})
|
|
310
325
|
|
|
311
326
|
const createStreamWithoutIds = async (stream: IKeitaroStream, campaignId: number) => {
|
|
@@ -364,7 +379,13 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
364
379
|
name: "bot",
|
|
365
380
|
mode: "accept",
|
|
366
381
|
payload: null
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: 'proxy',
|
|
385
|
+
mode: 'accept',
|
|
386
|
+
payload: null
|
|
367
387
|
}
|
|
388
|
+
|
|
368
389
|
],
|
|
369
390
|
offers: []
|
|
370
391
|
};
|
|
@@ -400,19 +421,26 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
400
421
|
}
|
|
401
422
|
}
|
|
402
423
|
|
|
424
|
+
console.log(existingCampaign)
|
|
403
425
|
return existingCampaign;
|
|
404
426
|
}
|
|
405
427
|
|
|
428
|
+
|
|
429
|
+
|
|
406
430
|
// Створення нової кампанії
|
|
407
431
|
let alias = generateAlias();
|
|
408
432
|
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
console.log(group)
|
|
436
|
+
|
|
409
437
|
let payload: Partial<IKeitaroCampaign> = {
|
|
410
438
|
// Унікальні поля
|
|
411
439
|
name: platformName ? platformCampaignName : name,
|
|
412
440
|
alias: alias,
|
|
413
441
|
domain_id: originalCampaign.domain_id,
|
|
414
442
|
position: [maxPosition + 100],
|
|
415
|
-
group_id:
|
|
443
|
+
group_id: group.id,
|
|
416
444
|
traffic_source_id: 17,
|
|
417
445
|
parameters: (parameters ? parameters.parameters : originalCampaign.parameters) as IKeitaroCampaignParameters,
|
|
418
446
|
source: originalCampaign.source,
|
|
@@ -428,8 +456,11 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
428
456
|
notes: originalCampaign.notes,
|
|
429
457
|
collect_clicks: originalCampaign.collect_clicks,
|
|
430
458
|
uniqueness_type: originalCampaign.uniqueness_type,
|
|
459
|
+
|
|
431
460
|
};
|
|
432
461
|
|
|
462
|
+
console.log(`payload`,payload)
|
|
463
|
+
|
|
433
464
|
const newCampaign: IKeitaroCampaign = await createCampaign(payload);
|
|
434
465
|
|
|
435
466
|
// Спочатку створюємо CLO потік з оновленими гео
|
|
@@ -441,10 +472,6 @@ async function cloneTraffleCampaign(app: IApp, platform: EPlatform, addDefaultSt
|
|
|
441
472
|
await createStreamWithoutIds(stream, newCampaign.id);
|
|
442
473
|
}
|
|
443
474
|
|
|
444
|
-
await keitaroApi.put(`/campaigns/${newCampaign.id}`, {
|
|
445
|
-
group_id: originalCampaign.group_id
|
|
446
|
-
});
|
|
447
|
-
|
|
448
475
|
const updatedCampaign = await getCampaignById(newCampaign.id);
|
|
449
476
|
return updatedCampaign;
|
|
450
477
|
}
|