@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
- let existingGroup = allGroups.data.find((group) => group.name == name);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bprotsyk/aso-core",
3
- "version": "2.1.107",
3
+ "version": "2.1.109",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "scripts": {
@@ -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
- let existingGroup = allGroups.data.find((group: any) => group.name == name)
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
- 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
- );
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
- console.log('Cloned campaign:', result);
32
- console.log(`domain`, result.domain.split('/')[2])
33
- } catch (error) {
34
- console.error('Error:', error);
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
- testClone();
49
+ testC()