@andrey4emk/npm-app-back-b24 0.9.8 → 1.0.2

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.
@@ -1,54 +1,41 @@
1
1
  export class ChatApp {
2
2
  /**
3
- * @param {Object} makeParam - объект с параметрами для создания токена
4
- * @param {string} makeParam.email - email для создания токена
5
- * @param {string} makeParam.pass - пароль для создания токена
6
- * @param {string} makeParam.appId - appId для создания токена
7
- *
8
- * @param {Object} authParam - объект с параметрами авторизации
9
- * @param {string} authParam.accessToken - accessToken для авторизации
10
- * @param {string} authParam.accessTokenEndTime - время окончания действия accessToken
11
- * @param {string} authParam.refreshToken - refreshToken для обновления accessToken
12
- * @param {string} authParam.refreshTokenEndTime - время окончания действия refreshToken
13
- *
14
- * @param {Object} typeParam - объект с типами мессенджеров и их параметрами
15
- * @param {Object} typeParam.whatsApp - параметры для WhatsApp
16
- * @param {string} typeParam.whatsApp.licenseId - ID лицензии для WhatsApp
17
- * @param {Array} typeParam.whatsApp.messenger - массив с типами мессенджеров для WhatsApp
18
- *
19
- * @param {Object} typeParam.telegram - параметры для Telegram
20
- * @param {string} typeParam.telegram.licenseId - ID лицензии для Telegram
21
- * @param {Array} typeParam.telegram.messenger - массив с типами мессенджеров для Telegram
3
+ * @param makeParam - объект с параметрами для создания токена
4
+ * @param authParam - объект с параметрами авторизации
5
+ * @param typeParam - объект с типами мессенджеров и их параметрами
22
6
  */
7
+ make;
8
+ auth;
9
+ type;
10
+ updateToken;
23
11
  constructor(makeParam, authParam, typeParam) {
24
12
  this.make = makeParam;
25
13
  this.auth = authParam;
26
14
  this.type = typeParam;
27
15
  this.updateToken = false;
28
16
  }
29
-
30
17
  async sendMessageChatApp(messangerType, messageData) {
31
- // Проверяем что верно указан messangerType и в messageData есть phone и message
32
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType)) {
33
- return { error: true, message: "Неверный тип мессенджера", data: null };
18
+ // Проверяем что верно указан messangerType и в messageData есть phone и message
19
+ if (!["whatsApp", "telegram"].includes(messangerType)) {
20
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
34
21
  }
35
22
  if (!messageData.phone || !messageData.message) {
36
- return { error: true, message: "Отсутствует phone или message", data: null };
23
+ return { error: true, message: "Отсутствует phone или message", data: undefined };
37
24
  }
38
- let check = await this.checkTokenChatApp();
25
+ const check = await this.checkTokenChatApp();
39
26
  if (check.error) {
40
- return { error: true, message: `Ошибка с токеном ChatApp в функции sendMessageChatApp класса ChatApp\n${check.message}`, data: null };
27
+ return { error: true, message: `Ошибка с токеном ChatApp в функции sendMessageChatApp класса ChatApp\n${check.message}`, data: undefined };
41
28
  }
42
- let phone = messageData.phone;
43
- let message = messageData.message;
44
- let url;
29
+ const phone = messageData.phone;
30
+ const message = messageData.message;
31
+ let url = "";
45
32
  if (messangerType === "whatsApp") {
46
33
  url = `https://api.chatapp.online/v1/licenses/${this.type.whatsApp.licenseId}/messengers/${this.type.whatsApp.messenger[0].type}/chats/${phone}/messages/text`;
47
34
  }
48
35
  if (messangerType === "telegram") {
49
36
  url = `https://api.chatapp.online/v1/licenses/${this.type.telegram.licenseId}/messengers/${this.type.telegram.messenger[0].type}/chats/${phone}/messages/text`;
50
37
  }
51
- let res = await fetch(url, {
38
+ const res = await fetch(url, {
52
39
  method: "POST",
53
40
  headers: {
54
41
  Lang: "en",
@@ -60,11 +47,11 @@ export class ChatApp {
60
47
  text: message,
61
48
  }),
62
49
  });
63
- let data = await res.json();
64
-
50
+ const data = (await res.json());
65
51
  if (!data.success) {
66
52
  return { error: true, message: `Ошибка при отправке сообщения в ChatApp через ${messangerType}`, data: data };
67
- } else {
53
+ }
54
+ else {
68
55
  // Если в процессе запроса обновили токен, то возвращаем информацию об этом.
69
56
  let newAuth = null;
70
57
  if (this.updateToken) {
@@ -75,32 +62,30 @@ export class ChatApp {
75
62
  return { error: false, message: `Сообщение успешно отправлено в ChatApp через ${messangerType}`, data: data, auth: newAuth };
76
63
  }
77
64
  }
78
-
79
65
  async sendFileChatApp(messangerType, messageData) {
80
- // Проверяем что верно указан messangerType и в messageData есть phone и message
81
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType)) {
82
- return { error: true, message: "Неверный тип мессенджера", data: null };
66
+ // Проверяем что верно указан messangerType и в messageData есть phone и message
67
+ if (!["whatsApp", "telegram"].includes(messangerType)) {
68
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
83
69
  }
84
70
  if (!messageData.phone || !messageData.message) {
85
- return { error: true, message: "Отсутствует phone или message", data: null };
71
+ return { error: true, message: "Отсутствует phone или message", data: undefined };
86
72
  }
87
- let check = await this.checkTokenChatApp();
73
+ const check = await this.checkTokenChatApp();
88
74
  if (check.error) {
89
- return { error: true, message: `Ошибка с токеном ChatApp в функции sendMessageChatApp класса ChatApp\n${check.message}`, data: null };
75
+ return { error: true, message: `Ошибка с токеном ChatApp в функции sendMessageChatApp класса ChatApp\n${check.message}`, data: undefined };
90
76
  }
91
- let phone = messageData.phone;
92
- let caption = messageData.message;
93
- let file = messageData.fileUrl;
94
- let fileName = messageData.fileName;
95
-
96
- let url;
77
+ const phone = messageData.phone;
78
+ const caption = messageData.message;
79
+ const file = messageData.fileUrl;
80
+ const fileName = messageData.fileName;
81
+ let url = "";
97
82
  if (messangerType === "whatsApp") {
98
83
  url = `https://api.chatapp.online/v1/licenses/${this.type.whatsApp.licenseId}/messengers/${this.type.whatsApp.messenger[0].type}/chats/${phone}/messages/file`;
99
84
  }
100
85
  if (messangerType === "telegram") {
101
86
  url = `https://api.chatapp.online/v1/licenses/${this.type.telegram.licenseId}/messengers/${this.type.telegram.messenger[0].type}/chats/${phone}/messages/file`;
102
87
  }
103
- let res = await fetch(url, {
88
+ const res = await fetch(url, {
104
89
  method: "POST",
105
90
  headers: {
106
91
  Lang: "en",
@@ -114,11 +99,11 @@ export class ChatApp {
114
99
  caption: caption,
115
100
  }),
116
101
  });
117
- let data = await res.json();
118
-
102
+ const data = (await res.json());
119
103
  if (!data.success) {
120
104
  return { error: true, message: `Ошибка при отправке сообщения в ChatApp через ${messangerType}`, data: data };
121
- } else {
105
+ }
106
+ else {
122
107
  // Если в процессе запроса обновили токен, то возвращаем информацию об этом.
123
108
  let newAuth = null;
124
109
  if (this.updateToken) {
@@ -129,23 +114,22 @@ export class ChatApp {
129
114
  return { error: false, message: `Сообщение успешно отправлено в ChatApp через ${messangerType}`, data: data, auth: newAuth };
130
115
  }
131
116
  }
132
-
133
117
  async phoneCheckChatApp(messangerType, phone) {
134
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType)) {
135
- return { error: true, message: "Неверный тип мессенджера", data: null };
118
+ if (!["whatsApp", "telegram"].includes(messangerType)) {
119
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
136
120
  }
137
- let check = await this.checkTokenChatApp();
121
+ const check = await this.checkTokenChatApp();
138
122
  if (check.error) {
139
- return { error: true, message: `Ошибка с токеном ChatApp в функции phoneCheckChatApp класса ChatApp\n${check.message}`, data: check };
123
+ return { error: true, message: `Ошибка с токеном ChatApp в функции phoneCheckChatApp класса ChatApp\n${check.message}`, data: check.data };
140
124
  }
141
- let url;
125
+ let url = "";
142
126
  if (messangerType === "whatsApp") {
143
127
  url = `https://api.chatapp.online/v1/licenses/${this.type.whatsApp.licenseId}/messengers/${this.type.whatsApp.messenger[0].type}/phones/${phone}/check`;
144
128
  }
145
129
  if (messangerType === "telegram") {
146
130
  url = `https://api.chatapp.online/v1/licenses/${this.type.telegram.licenseId}/messengers/${this.type.telegram.messenger[0].type}/phones/${phone}/check`;
147
131
  }
148
- let res = await fetch(url, {
132
+ const res = await fetch(url, {
149
133
  method: "GET",
150
134
  headers: {
151
135
  Lang: "en",
@@ -153,10 +137,11 @@ export class ChatApp {
153
137
  Authorization: this.auth.accessToken,
154
138
  },
155
139
  });
156
- let data = await res.json();
140
+ const data = (await res.json());
157
141
  if (!data.success) {
158
142
  return { error: true, message: `Ошибка при проверке телефона в ChatApp через ${messangerType}`, data: data };
159
- } else {
143
+ }
144
+ else {
160
145
  // Если в процессе запроса обновили токен, то возвращаем информацию об этом.
161
146
  let newAuth = null;
162
147
  if (this.updateToken) {
@@ -164,11 +149,10 @@ export class ChatApp {
164
149
  // Сбрасываем флаг обновления токена
165
150
  this.updateToken = false;
166
151
  }
167
- data.check = data.data.exist;
152
+ data.check = data.data?.exist;
168
153
  return { error: false, message: `Телефон успешно проверен в ChatApp через ${messangerType}`, data: data, auth: newAuth };
169
154
  }
170
155
  }
171
-
172
156
  async checkTokenChatApp() {
173
157
  try {
174
158
  const response = await fetch("https://api.chatapp.online/v1/tokens/check", {
@@ -179,19 +163,20 @@ export class ChatApp {
179
163
  Authorization: this.auth.accessToken,
180
164
  },
181
165
  });
182
-
183
- const data = await response.json();
166
+ const data = (await response.json());
184
167
  if (!data.success) {
185
168
  await this.refreshTokenChatApp();
186
169
  return { error: false, message: "Токен обновлен" };
187
- } else {
170
+ }
171
+ else {
188
172
  return { error: false, message: "Токен действителен" };
189
173
  }
190
- } catch (error) {
191
- return { error: true, message: error.message, data: null };
174
+ }
175
+ catch (error) {
176
+ const err = error;
177
+ return { error: true, message: err.message, data: undefined };
192
178
  }
193
179
  }
194
-
195
180
  async makeTokenChatApp() {
196
181
  console.warn("makeTokenChatApp called");
197
182
  try {
@@ -208,23 +193,24 @@ export class ChatApp {
208
193
  appId: this.make.appId,
209
194
  }),
210
195
  });
211
-
212
- const data = await response.json();
196
+ const data = (await response.json());
213
197
  if (!data.success) {
214
198
  return { error: true, message: "Не удалось получить токен ChatApp", data: data };
215
- } else {
199
+ }
200
+ else {
216
201
  this.auth.accessToken = data.data.accessToken;
217
202
  this.auth.accessTokenEndTime = data.data.accessTokenEndTime;
218
203
  this.auth.refreshToken = data.data.refreshToken;
219
204
  this.auth.refreshTokenEndTime = data.data.refreshTokenEndTime;
220
205
  this.updateToken = true;
221
- return { error: false };
206
+ return { error: false, message: "Токен получен." };
222
207
  }
223
- } catch (error) {
224
- return { error: true, message: error.message, data: null };
208
+ }
209
+ catch (error) {
210
+ const err = error;
211
+ return { error: true, message: err.message, data: undefined };
225
212
  }
226
213
  }
227
-
228
214
  async refreshTokenChatApp() {
229
215
  try {
230
216
  const response = await fetch("https://api.chatapp.online/v1/tokens/refresh", {
@@ -238,28 +224,30 @@ export class ChatApp {
238
224
  refreshToken: this.auth.refreshToken,
239
225
  }),
240
226
  });
241
- const data = await response.json();
227
+ const data = (await response.json());
242
228
  if (!data.success) {
243
- let resMakeToken = await this.makeTokenChatApp();
244
-
229
+ const resMakeToken = await this.makeTokenChatApp();
245
230
  if (resMakeToken.error) {
246
231
  return { error: true, message: "Не удалось обновить токен ChatApp", data: data };
247
- } else {
248
- return { error: false };
249
232
  }
250
- } else {
233
+ else {
234
+ return { error: false, message: "Токен обновлен через makeToken." };
235
+ }
236
+ }
237
+ else {
251
238
  this.auth.accessToken = data.data.accessToken;
252
239
  this.auth.accessTokenEndTime = data.data.accessTokenEndTime;
253
240
  this.auth.refreshToken = data.data.refreshToken;
254
241
  this.auth.refreshTokenEndTime = data.data.refreshTokenEndTime;
255
242
  this.updateToken = true;
256
- return { error: false };
243
+ return { error: false, message: "Токен обновлен." };
257
244
  }
258
- } catch (error) {
259
- return { error: true, message: error.message, data: null };
245
+ }
246
+ catch (error) {
247
+ const err = error;
248
+ return { error: true, message: err.message, data: undefined };
260
249
  }
261
250
  }
262
-
263
251
  async getLicensesChatApp() {
264
252
  try {
265
253
  const response = await fetch("https://api.chatapp.online/v1/licenses", {
@@ -270,15 +258,17 @@ export class ChatApp {
270
258
  Authorization: this.auth.accessToken,
271
259
  },
272
260
  });
273
- const data = await response.json();
274
-
261
+ const data = (await response.json());
275
262
  if (!data.success) {
276
- return { error: true, message: "Не удалось получить лицензии ChatApp", data: null };
277
- } else {
263
+ return { error: true, message: "Не удалось получить лицензии ChatApp", data: undefined };
264
+ }
265
+ else {
278
266
  return { error: false, message: "Лицензии успешно получены", data: data.licenses };
279
267
  }
280
- } catch (error) {
281
- return { error: true, message: error.message, data: null };
268
+ }
269
+ catch (error) {
270
+ const err = error;
271
+ return { error: true, message: err.message, data: undefined };
282
272
  }
283
273
  }
284
274
  }
@@ -0,0 +1,20 @@
1
+ import type { EmailAuth, EmailData, ApiResult } from "../types/index.js";
2
+ import type SMTPTransport from "nodemailer/lib/smtp-transport/index.js";
3
+ /**
4
+ * @param auth - объект с данными для авторизации в почте
5
+ * @param auth.user - пользователь (почта)
6
+ * @param auth.pass - пароль или app password
7
+ */
8
+ export declare class Email {
9
+ private auth;
10
+ private transporter;
11
+ constructor(auth: EmailAuth);
12
+ /**
13
+ * Отправка email
14
+ * @param dataMail - данные письма
15
+ * @returns результат отправки
16
+ */
17
+ send(dataMail: EmailData): Promise<ApiResult<SMTPTransport.SentMessageInfo>>;
18
+ downloadFileToUrl(fileUrl: string): Promise<ApiResult<Buffer>>;
19
+ }
20
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/sendMessage/email.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,aAAa,MAAM,wCAAwC,CAAC;AAExE;;;;GAIG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,WAAW,CAAoE;gBAE3E,IAAI,EAAE,SAAS;IAiB3B;;;;OAIG;IACG,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAkC5E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAgBvE"}
@@ -1,11 +1,12 @@
1
1
  import nodemailer from "nodemailer";
2
-
3
2
  /**
4
3
  * @param auth - объект с данными для авторизации в почте
5
4
  * @param auth.user - пользователь (почта)
6
5
  * @param auth.pass - пароль или app password
7
6
  */
8
7
  export class Email {
8
+ auth;
9
+ transporter;
9
10
  constructor(auth) {
10
11
  this.auth = auth;
11
12
  this.transporter = nodemailer.createTransport({
@@ -22,43 +23,42 @@ export class Email {
22
23
  // maxMessages: 50
23
24
  });
24
25
  }
25
-
26
26
  /**
27
- * @param dataMail
28
- * @returns
27
+ * Отправка email
28
+ * @param dataMail - данные письма
29
+ * @returns результат отправки
29
30
  */
30
31
  async send(dataMail) {
31
32
  try {
33
+ let attachments = null;
32
34
  // Если прислали ссылку на файл, то скачиваем его и добавляем в attachments
33
35
  if (dataMail.fileUrl) {
34
- let resDownloadFile = await this.downloadFileToUrl(dataMail.fileUrl);
36
+ const resDownloadFile = await this.downloadFileToUrl(dataMail.fileUrl);
35
37
  if (resDownloadFile.error) {
36
38
  return { error: true, message: resDownloadFile.message };
37
39
  }
38
- dataMail.attachments = [
40
+ attachments = [
39
41
  {
40
- filename: dataMail.fileName,
41
- content: resDownloadFile.buffer,
42
+ filename: dataMail.fileName || "file",
43
+ content: resDownloadFile.data,
42
44
  },
43
45
  ];
44
- } else {
45
- dataMail.attachments = null;
46
46
  }
47
-
48
47
  const info = await this.transporter.sendMail({
49
48
  from: `Натяжные потолки Репа. <${this.auth.user}>`, // адрес отправителя
50
49
  to: [dataMail.to, this.auth.user], // строка или массив адресов
51
50
  subject: dataMail.subject,
52
51
  text: dataMail.text,
53
52
  html: dataMail.html, // html-версия
54
- attachments: dataMail.attachments,
53
+ attachments: attachments || undefined,
55
54
  });
56
- return { error: false, info };
57
- } catch (error) {
58
- return { error: true, message: error.message };
55
+ return { error: false, info: info, message: "Email отправлен." };
56
+ }
57
+ catch (error) {
58
+ const err = error;
59
+ return { error: true, message: err.message };
59
60
  }
60
61
  }
61
-
62
62
  async downloadFileToUrl(fileUrl) {
63
63
  try {
64
64
  const response = await fetch(fileUrl);
@@ -67,11 +67,12 @@ export class Email {
67
67
  }
68
68
  const arrayBuffer = await response.arrayBuffer();
69
69
  const buffer = Buffer.from(arrayBuffer);
70
-
71
70
  // Возвращаем буфер
72
- return { error: false, buffer: buffer };
73
- } catch (error) {
74
- return { error: true, message: `Ошибка при скачивании файла по fileUrl: ${error.message}` };
71
+ return { error: false, data: buffer, message: "Файл скачан." };
72
+ }
73
+ catch (error) {
74
+ const err = error;
75
+ return { error: true, message: `Ошибка при скачивании файла по fileUrl: ${err.message}` };
75
76
  }
76
77
  }
77
78
  }
@@ -0,0 +1,21 @@
1
+ import type { SmsgoldAuth, SmsData, B24Client, ApiResult } from "../types/index.js";
2
+ interface DiskFileResult {
3
+ ID: string;
4
+ NAME: string;
5
+ }
6
+ export declare class Smsgold {
7
+ private user;
8
+ private pass;
9
+ private b24;
10
+ constructor(authParam: SmsgoldAuth, b24?: B24Client | null);
11
+ sendSms(messageData: SmsData): Promise<ApiResult<{
12
+ status: number;
13
+ statusText: string;
14
+ data?: string;
15
+ errorText?: string;
16
+ }>>;
17
+ uploadFileInFolderB24(fileBuffer: Buffer, fileName: string): Promise<ApiResult<DiskFileResult>>;
18
+ downloadFileToUrl(fileUrl: string): Promise<ApiResult<Buffer>>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=smsgold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smsgold.d.ts","sourceRoot":"","sources":["../../src/sendMessage/smsgold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,UAAU,cAAc;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,OAAO;IAChB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAmB;gBAElB,SAAS,EAAE,WAAW,EAAE,GAAG,GAAE,SAAS,GAAG,IAAW;IAM1D,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAwF5H,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAqB/F,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAgBvE"}
@@ -1,48 +1,51 @@
1
1
  export class Smsgold {
2
+ user;
3
+ pass;
4
+ b24;
2
5
  constructor(authParam, b24 = null) {
3
6
  this.user = authParam.user;
4
7
  this.pass = authParam.pass;
5
8
  this.b24 = b24;
6
9
  }
7
-
8
10
  async sendSms(messageData) {
9
11
  const { phone, message } = messageData;
10
12
  // Проверяем наличие необходимых данных
11
13
  if (!this.user || !this.pass) {
12
- return { error: true, message: "Отсутствуют учетные данные SMSGold", result: null };
14
+ return { error: true, message: "Отсутствуют учетные данные SMSGold", result: undefined };
13
15
  }
14
16
  if (!phone || !message) {
15
- return { error: true, message: "Отсутствуют номер телефона или текст сообщения", result: null };
17
+ return { error: true, message: "Отсутствуют номер телефона или текст сообщения", result: undefined };
16
18
  }
17
19
  // Проверяем нужно ли отправить файл
18
20
  let publicLink = "";
19
21
  if (messageData.fileUrl && messageData.fileName) {
20
- let fileUrl = messageData.fileUrl;
21
- let fileName = messageData.fileName;
22
+ const fileUrl = messageData.fileUrl;
23
+ const fileName = messageData.fileName;
22
24
  // Скачиваем файл по ссылке
23
- let resDownloadFile = await this.downloadFileToUrl(fileUrl);
25
+ const resDownloadFile = await this.downloadFileToUrl(fileUrl);
24
26
  if (resDownloadFile.error) {
25
27
  return { error: true, message: `Не получилось скачать файл: ${resDownloadFile.message}` };
26
28
  }
27
29
  // Копируем файл на диск проекта битрикс24. Где автоматически запускается БП на автоматическое удаление файла через 14 дней
28
- let resUploadFileInFolderB24 = await this.uploadFileInFolderB24(resDownloadFile.buffer, fileName);
30
+ const resUploadFileInFolderB24 = await this.uploadFileInFolderB24(resDownloadFile.data, fileName);
29
31
  if (resUploadFileInFolderB24.error) {
30
32
  return { error: true, message: resUploadFileInFolderB24.message };
31
33
  }
32
- let idFileContract = resUploadFileInFolderB24.data.ID;
34
+ const idFileContract = resUploadFileInFolderB24.data.ID;
33
35
  // Получаем публичную ссылку на файл для вставки в сообщение
34
-
35
36
  try {
36
- publicLink = await this.b24.callMethod("disk.file.getExternalLink", {
37
+ const response = await this.b24.callMethod("disk.file.getExternalLink", {
37
38
  id: idFileContract,
38
39
  });
39
- publicLink = publicLink.getData().result;
40
- } catch (error) {
41
- return { error: true, message: `Ошибка при получении публичной ссылки на файл: ${error.message}` };
40
+ publicLink = response.getData().result;
41
+ }
42
+ catch (error) {
43
+ const err = error;
44
+ return { error: true, message: `Ошибка при получении публичной ссылки на файл: ${err.message}` };
42
45
  }
43
46
  }
44
47
  try {
45
- let body = new URLSearchParams({
48
+ const body = new URLSearchParams({
46
49
  user: this.user,
47
50
  pass: this.pass,
48
51
  action: "send",
@@ -50,25 +53,22 @@ export class Smsgold {
50
53
  number: phone,
51
54
  sender: "potolkiRepa",
52
55
  }).toString();
53
-
54
- let result = await fetch("https://web.smsgold.ru/http2/", {
56
+ const result = await fetch("https://web.smsgold.ru/http2/", {
55
57
  method: "POST",
56
58
  headers: {
57
59
  "Content-Type": "application/x-www-form-urlencoded",
58
60
  },
59
61
  body: body,
60
62
  });
61
-
62
63
  if (!result.ok) {
63
64
  const errorText = await result.text();
64
- let messageErr = {
65
+ const messageErr = {
65
66
  status: result.status,
66
67
  statusText: result.statusText,
67
68
  errorText: errorText,
68
69
  };
69
70
  return { error: true, message: `API ошибка: ${result.status}`, result: messageErr };
70
71
  }
71
-
72
72
  const responseData = await result.text();
73
73
  return {
74
74
  error: false,
@@ -79,30 +79,32 @@ export class Smsgold {
79
79
  data: responseData,
80
80
  },
81
81
  };
82
- } catch (error) {
83
- return { error: true, message: error.message, result: null };
82
+ }
83
+ catch (error) {
84
+ const err = error;
85
+ return { error: true, message: err.message, result: undefined };
84
86
  }
85
87
  }
86
-
87
88
  // Функция для закачивания файла в папку битрикс24. Используем метод disk.folder.uploadfile
88
89
  async uploadFileInFolderB24(fileBuffer, fileName) {
89
90
  try {
90
- let base64File = await fileBuffer.toString("base64");
91
- // Используем метод disk.folder.uploadfile
92
- let res = await this.b24.callMethod("disk.folder.uploadfile", {
93
- id: 2792881, // Id папки "contract_company" из проекта "Документы и договора" https://repacheb.bitrix24.ru/workgroups/group/193/disk/path/
91
+ const base64File = fileBuffer.toString("base64");
92
+ // Используем метод disk.folder.uploadfile
93
+ const res = await this.b24.callMethod("disk.folder.uploadfile", {
94
+ id: 2792881, // Id папки "contract_company" из проекта "Документы и договора"
94
95
  data: {
95
96
  NAME: fileName,
96
97
  },
97
98
  fileContent: [fileName, base64File],
98
99
  });
99
- const data = await res.getData().result;
100
- return { error: false, data: data };
101
- } catch (error) {
102
- return { error: true, message: `Ошибка при загрузке файла в папку битрикс24: ${error.message}` };
100
+ const data = res.getData().result;
101
+ return { error: false, data: data, message: "Файл загружен." };
102
+ }
103
+ catch (error) {
104
+ const err = error;
105
+ return { error: true, message: `Ошибка при загрузке файла в папку битрикс24: ${err.message}` };
103
106
  }
104
107
  }
105
-
106
108
  async downloadFileToUrl(fileUrl) {
107
109
  try {
108
110
  const response = await fetch(fileUrl);
@@ -111,11 +113,12 @@ export class Smsgold {
111
113
  }
112
114
  const arrayBuffer = await response.arrayBuffer();
113
115
  const buffer = Buffer.from(arrayBuffer);
114
-
115
116
  // Возвращаем буфер
116
- return { error: false, buffer: buffer };
117
- } catch (error) {
118
- return { error: true, message: `Ошибка при скачивании файла по fileUrl: ${error.message}` };
117
+ return { error: false, data: buffer, message: "Файл скачан." };
118
+ }
119
+ catch (error) {
120
+ const err = error;
121
+ return { error: true, message: `Ошибка при скачивании файла по fileUrl: ${err.message}` };
119
122
  }
120
123
  }
121
124
  }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Wappi API integration class
3
+ * инициализация класса Wappi initWappi
4
+ * @param {WappiAuth} maxAuth - Wappi auth для Max
5
+ * @param {WappiAuth} telegaAuth - Wappi auth для Telegram
6
+ * @param {WappiAuth} whatsAppAuth - Wappi auth для WhatsApp
7
+ * методы класса:
8
+ * sendMessageWappi(messangerType, messageData) - отправка сообщения
9
+ * sendFileWappi(messangerType, messageData) - отправка файла
10
+ * phoneCheckWappi(messangerType, phone) - проверка номера телефона
11
+ */
12
+ import type { WappiAuth, MessageData, MessengerType, ApiResult } from "../types/index.js";
13
+ interface WappiResponse {
14
+ status: string;
15
+ detail?: string;
16
+ on_max?: boolean;
17
+ on_whatsapp?: boolean;
18
+ contact?: unknown;
19
+ haveContact?: boolean;
20
+ check?: boolean;
21
+ }
22
+ export declare class Wappi {
23
+ private maxAuth;
24
+ private telegaAuth;
25
+ private whatsAppAuth;
26
+ constructor(maxAuth: WappiAuth, telegaAuth: WappiAuth, whatsAppAuth: WappiAuth);
27
+ sendMessageWappi(messangerType: MessengerType, messageData: MessageData): Promise<ApiResult<WappiResponse>>;
28
+ sendFileWappi(messangerType: MessengerType, messageData: MessageData): Promise<ApiResult<WappiResponse>>;
29
+ phoneCheckWappi(messangerType: MessengerType, phone: string): Promise<ApiResult<WappiResponse>>;
30
+ getContactTelegramWappi(phone: string): Promise<ApiResult<WappiResponse>>;
31
+ addContactTelegramWappi(phone: string): Promise<ApiResult<WappiResponse>>;
32
+ convertToBase64(fileUrl: string): Promise<ApiResult<string>>;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=wappi.d.ts.map