@bprotsyk/aso-core 2.1.107 → 2.1.109
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.
|
@@ -29,8 +29,12 @@ async function getTraffleOffersGroups() {
|
|
|
29
29
|
}
|
|
30
30
|
async function createGroup(name, type) {
|
|
31
31
|
let allGroups = await http_1.default.get(`/groups?type=${type}`);
|
|
32
|
-
|
|
32
|
+
// Пошук існуючої групи з різними варіантами співпадіння
|
|
33
|
+
let existingGroup = allGroups.data.find((group) => {
|
|
34
|
+
return String(group.name).trim() === String(name).trim();
|
|
35
|
+
});
|
|
33
36
|
if (existingGroup) {
|
|
37
|
+
console.log(`[createGroup] Found existing group:`, existingGroup);
|
|
34
38
|
return existingGroup;
|
|
35
39
|
}
|
|
36
40
|
try {
|
|
@@ -41,7 +45,53 @@ async function createGroup(name, type) {
|
|
|
41
45
|
return response.data;
|
|
42
46
|
}
|
|
43
47
|
catch (error) {
|
|
44
|
-
console.error("Error creating group:", error);
|
|
48
|
+
console.error("Error creating group:", error.message);
|
|
49
|
+
// Якщо група вже існує або не можемо створити, використовуємо eltrafico
|
|
50
|
+
if (error.response && (error.response.status === 422 || error.response.status === 403)) {
|
|
51
|
+
const errorData = error.response.data;
|
|
52
|
+
console.error("Validation error details:", errorData);
|
|
53
|
+
console.log(`Cannot create/access group "${name}". Trying to use "eltrafico" group...`);
|
|
54
|
+
// Шукаємо існуючу групу "eltrafico"
|
|
55
|
+
let eltraficoGroup = allGroups.data.find((group) => {
|
|
56
|
+
return String(group.name).toLowerCase().trim() === "eltrafico";
|
|
57
|
+
});
|
|
58
|
+
if (eltraficoGroup) {
|
|
59
|
+
console.log("Found existing eltrafico group:", eltraficoGroup);
|
|
60
|
+
return eltraficoGroup;
|
|
61
|
+
}
|
|
62
|
+
// Якщо групи "eltrafico" немає, створюємо її
|
|
63
|
+
console.log("Creating new eltrafico group...");
|
|
64
|
+
try {
|
|
65
|
+
const eltraficoResponse = await http_1.default.post('/groups', {
|
|
66
|
+
name: "eltrafico",
|
|
67
|
+
type: type
|
|
68
|
+
});
|
|
69
|
+
console.log("Created eltrafico group:", eltraficoResponse.data);
|
|
70
|
+
return eltraficoResponse.data;
|
|
71
|
+
}
|
|
72
|
+
catch (eltraficoError) {
|
|
73
|
+
console.error("Failed to create eltrafico group:", eltraficoError.message);
|
|
74
|
+
// Якщо eltrafico теж не можемо створити, можливо вона вже існує
|
|
75
|
+
if (eltraficoError.response && eltraficoError.response.status === 422) {
|
|
76
|
+
// Оновлюємо список груп і шукаємо eltrafico ще раз
|
|
77
|
+
const freshGroups = await http_1.default.get(`/groups?type=${type}`);
|
|
78
|
+
eltraficoGroup = freshGroups.data.find((group) => {
|
|
79
|
+
return String(group.name).toLowerCase().trim() === "eltrafico";
|
|
80
|
+
});
|
|
81
|
+
if (eltraficoGroup) {
|
|
82
|
+
console.log("Found eltrafico group after refresh:", eltraficoGroup);
|
|
83
|
+
return eltraficoGroup;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// В крайньому випадку використовуємо першу доступну групу
|
|
87
|
+
if (allGroups.data && allGroups.data.length > 0) {
|
|
88
|
+
const fallbackGroup = allGroups.data[0];
|
|
89
|
+
console.log(`Using first available group as last resort:`, fallbackGroup);
|
|
90
|
+
return fallbackGroup;
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Cannot create or access any groups for type "${type}".`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
45
95
|
throw error;
|
|
46
96
|
}
|
|
47
97
|
}
|
|
@@ -163,7 +213,7 @@ async function TrafleKeitaroParameters(parameters) {
|
|
|
163
213
|
sub_id_4: { name: 'DEV', placeholder: '', alias: '' },
|
|
164
214
|
sub_id_5: { name: 'LANG', placeholder: '', alias: '' },
|
|
165
215
|
sub_id_10: { name: 'market', placeholder: '', alias: '' },
|
|
166
|
-
sub_id_15: { name: ParamsGenerationsOpenAIResponse?.naming, placeholder: '{naming}', alias: 'Naming' },
|
|
216
|
+
sub_id_15: { name: originalParameters?.sub_id_15?.name || ParamsGenerationsOpenAIResponse?.naming, placeholder: '{naming}', alias: 'Naming' },
|
|
167
217
|
sub_id_16: {
|
|
168
218
|
name: 'bundle_id',
|
|
169
219
|
placeholder: bundle,
|
package/package.json
CHANGED
|
@@ -65,9 +65,14 @@ async function getTraffleOffersGroups(): Promise<any[]> {
|
|
|
65
65
|
async function createGroup(name: string, type: "campaigns" | "offers" | "landings" | "domains"): Promise<{ id: number, name: string, position: number, type: string }> {
|
|
66
66
|
|
|
67
67
|
let allGroups = await keitaroApi.get(`/groups?type=${type}`)
|
|
68
|
-
|
|
68
|
+
|
|
69
|
+
// Пошук існуючої групи з різними варіантами співпадіння
|
|
70
|
+
let existingGroup = allGroups.data.find((group: any) => {
|
|
71
|
+
return String(group.name).trim() === String(name).trim();
|
|
72
|
+
});
|
|
69
73
|
|
|
70
74
|
if (existingGroup) {
|
|
75
|
+
console.log(`[createGroup] Found existing group:`, existingGroup);
|
|
71
76
|
return existingGroup;
|
|
72
77
|
}
|
|
73
78
|
|
|
@@ -78,8 +83,63 @@ async function createGroup(name: string, type: "campaigns" | "offers" | "landing
|
|
|
78
83
|
});
|
|
79
84
|
|
|
80
85
|
return response.data;
|
|
81
|
-
} catch (error) {
|
|
82
|
-
console.error("Error creating group:", error);
|
|
86
|
+
} catch (error: any) {
|
|
87
|
+
console.error("Error creating group:", error.message);
|
|
88
|
+
|
|
89
|
+
// Якщо група вже існує або не можемо створити, використовуємо eltrafico
|
|
90
|
+
if (error.response && (error.response.status === 422 || error.response.status === 403)) {
|
|
91
|
+
const errorData = error.response.data;
|
|
92
|
+
console.error("Validation error details:", errorData);
|
|
93
|
+
|
|
94
|
+
console.log(`Cannot create/access group "${name}". Trying to use "eltrafico" group...`);
|
|
95
|
+
|
|
96
|
+
// Шукаємо існуючу групу "eltrafico"
|
|
97
|
+
let eltraficoGroup = allGroups.data.find((group: any) => {
|
|
98
|
+
return String(group.name).toLowerCase().trim() === "eltrafico";
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
if (eltraficoGroup) {
|
|
102
|
+
console.log("Found existing eltrafico group:", eltraficoGroup);
|
|
103
|
+
return eltraficoGroup;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Якщо групи "eltrafico" немає, створюємо її
|
|
107
|
+
console.log("Creating new eltrafico group...");
|
|
108
|
+
try {
|
|
109
|
+
const eltraficoResponse = await keitaroApi.post('/groups', {
|
|
110
|
+
name: "eltrafico",
|
|
111
|
+
type: type
|
|
112
|
+
});
|
|
113
|
+
console.log("Created eltrafico group:", eltraficoResponse.data);
|
|
114
|
+
return eltraficoResponse.data;
|
|
115
|
+
} catch (eltraficoError: any) {
|
|
116
|
+
console.error("Failed to create eltrafico group:", eltraficoError.message);
|
|
117
|
+
|
|
118
|
+
// Якщо eltrafico теж не можемо створити, можливо вона вже існує
|
|
119
|
+
if (eltraficoError.response && eltraficoError.response.status === 422) {
|
|
120
|
+
// Оновлюємо список груп і шукаємо eltrafico ще раз
|
|
121
|
+
const freshGroups = await keitaroApi.get(`/groups?type=${type}`);
|
|
122
|
+
eltraficoGroup = freshGroups.data.find((group: any) => {
|
|
123
|
+
return String(group.name).toLowerCase().trim() === "eltrafico";
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
if (eltraficoGroup) {
|
|
127
|
+
console.log("Found eltrafico group after refresh:", eltraficoGroup);
|
|
128
|
+
return eltraficoGroup;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// В крайньому випадку використовуємо першу доступну групу
|
|
133
|
+
if (allGroups.data && allGroups.data.length > 0) {
|
|
134
|
+
const fallbackGroup = allGroups.data[0];
|
|
135
|
+
console.log(`Using first available group as last resort:`, fallbackGroup);
|
|
136
|
+
return fallbackGroup;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
throw new Error(`Cannot create or access any groups for type "${type}".`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
83
143
|
throw error;
|
|
84
144
|
}
|
|
85
145
|
}
|
|
@@ -228,7 +288,7 @@ async function TrafleKeitaroParameters(parameters: any) {
|
|
|
228
288
|
sub_id_4: { name: 'DEV', placeholder: '', alias: '' },
|
|
229
289
|
sub_id_5: { name: 'LANG', placeholder: '', alias: '' },
|
|
230
290
|
sub_id_10: { name: 'market', placeholder: '', alias: '' },
|
|
231
|
-
sub_id_15: { name: ParamsGenerationsOpenAIResponse?.naming, placeholder: '{naming}', alias: 'Naming' },
|
|
291
|
+
sub_id_15: { name: originalParameters?.sub_id_15?.name || ParamsGenerationsOpenAIResponse?.naming, placeholder: '{naming}', alias: 'Naming' },
|
|
232
292
|
sub_id_16: {
|
|
233
293
|
name: 'bundle_id',
|
|
234
294
|
placeholder: bundle,
|
package/test-keitaro.js
CHANGED
|
@@ -1,38 +1,49 @@
|
|
|
1
1
|
const { TraffleKeitaroService } = require('./lib/network/keitaro/traffle/traffle-keitaro-service');
|
|
2
2
|
const { EPlatform } = require('./lib/app/app');
|
|
3
3
|
|
|
4
|
-
async function testClone() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
4
|
+
// async function testClone() {
|
|
5
|
+
// try {
|
|
6
|
+
// // Тестові дані для створення кампанії
|
|
7
|
+
// const testApp = {
|
|
8
|
+
// id: 901,
|
|
9
|
+
// bundle: "com.test.app",
|
|
10
|
+
// name: "Test App",
|
|
11
|
+
// platforms: {
|
|
12
|
+
// '@': {
|
|
13
|
+
// geo: ["UA", "RU", "US"],
|
|
14
|
+
// appsflyerParams: {
|
|
15
|
+
// apiToken: "test_token"
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
18
|
+
// },
|
|
19
|
+
// domainParams: {
|
|
20
|
+
// name: "test.com"
|
|
21
|
+
// }
|
|
22
|
+
// };
|
|
23
|
+
|
|
24
|
+
// // Створюємо Traffle кампанію
|
|
25
|
+
// const result = await TraffleKeitaroService.cloneTraffleCampaign(
|
|
26
|
+
// testApp,
|
|
27
|
+
// EPlatform.GENERAL,
|
|
28
|
+
// true // addDefaultStreams
|
|
29
|
+
// );
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
// console.log('Cloned campaign:', result);
|
|
32
|
+
// console.log(`domain`, result.domain.split('/')[2])
|
|
33
|
+
// } catch (error) {
|
|
34
|
+
// console.error('Error:', error);
|
|
35
|
+
// }
|
|
36
|
+
// }
|
|
37
|
+
|
|
38
|
+
// testClone();
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
async function testC() {
|
|
44
|
+
|
|
45
|
+
const createGroup = await TraffleKeitaroService.createGroup("727", "campaigns")
|
|
46
|
+
console.log(`createGroup`, createGroup)
|
|
36
47
|
}
|
|
37
48
|
|
|
38
|
-
|
|
49
|
+
testC()
|