@bprotsyk/aso-core 2.1.108 → 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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bprotsyk/aso-core",
3
- "version": "2.1.108",
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
  }
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()