@warriorteam/redai-zalo-sdk 1.1.0

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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +448 -0
  3. package/dist/clients/base-client.d.ts +67 -0
  4. package/dist/clients/base-client.d.ts.map +1 -0
  5. package/dist/clients/base-client.js +297 -0
  6. package/dist/clients/base-client.js.map +1 -0
  7. package/dist/clients/zalo-client.d.ts +131 -0
  8. package/dist/clients/zalo-client.d.ts.map +1 -0
  9. package/dist/clients/zalo-client.js +215 -0
  10. package/dist/clients/zalo-client.js.map +1 -0
  11. package/dist/index.d.ts +40 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +82 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/services/article.service.d.ts +144 -0
  16. package/dist/services/article.service.d.ts.map +1 -0
  17. package/dist/services/article.service.js +518 -0
  18. package/dist/services/article.service.js.map +1 -0
  19. package/dist/services/auth.service.d.ts +55 -0
  20. package/dist/services/auth.service.d.ts.map +1 -0
  21. package/dist/services/auth.service.js +269 -0
  22. package/dist/services/auth.service.js.map +1 -0
  23. package/dist/services/consultation.service.d.ts +73 -0
  24. package/dist/services/consultation.service.d.ts.map +1 -0
  25. package/dist/services/consultation.service.js +208 -0
  26. package/dist/services/consultation.service.js.map +1 -0
  27. package/dist/services/general-message.service.d.ts +85 -0
  28. package/dist/services/general-message.service.d.ts.map +1 -0
  29. package/dist/services/general-message.service.js +248 -0
  30. package/dist/services/general-message.service.js.map +1 -0
  31. package/dist/services/group-management.service.d.ts +220 -0
  32. package/dist/services/group-management.service.d.ts.map +1 -0
  33. package/dist/services/group-management.service.js +562 -0
  34. package/dist/services/group-management.service.js.map +1 -0
  35. package/dist/services/group-message.service.d.ts +102 -0
  36. package/dist/services/group-message.service.d.ts.map +1 -0
  37. package/dist/services/group-message.service.js +233 -0
  38. package/dist/services/group-message.service.js.map +1 -0
  39. package/dist/services/message-management.service.d.ts +135 -0
  40. package/dist/services/message-management.service.d.ts.map +1 -0
  41. package/dist/services/message-management.service.js +237 -0
  42. package/dist/services/message-management.service.js.map +1 -0
  43. package/dist/services/oa.service.d.ts +67 -0
  44. package/dist/services/oa.service.d.ts.map +1 -0
  45. package/dist/services/oa.service.js +223 -0
  46. package/dist/services/oa.service.js.map +1 -0
  47. package/dist/services/promotion.service.d.ts +114 -0
  48. package/dist/services/promotion.service.d.ts.map +1 -0
  49. package/dist/services/promotion.service.js +247 -0
  50. package/dist/services/promotion.service.js.map +1 -0
  51. package/dist/services/tag.service.d.ts +144 -0
  52. package/dist/services/tag.service.d.ts.map +1 -0
  53. package/dist/services/tag.service.js +184 -0
  54. package/dist/services/tag.service.js.map +1 -0
  55. package/dist/services/transaction.service.d.ts +110 -0
  56. package/dist/services/transaction.service.d.ts.map +1 -0
  57. package/dist/services/transaction.service.js +231 -0
  58. package/dist/services/transaction.service.js.map +1 -0
  59. package/dist/services/user-management.service.d.ts +117 -0
  60. package/dist/services/user-management.service.d.ts.map +1 -0
  61. package/dist/services/user-management.service.js +239 -0
  62. package/dist/services/user-management.service.js.map +1 -0
  63. package/dist/services/user.service.d.ts +84 -0
  64. package/dist/services/user.service.d.ts.map +1 -0
  65. package/dist/services/user.service.js +323 -0
  66. package/dist/services/user.service.js.map +1 -0
  67. package/dist/services/video-upload.service.d.ts +83 -0
  68. package/dist/services/video-upload.service.d.ts.map +1 -0
  69. package/dist/services/video-upload.service.js +267 -0
  70. package/dist/services/video-upload.service.js.map +1 -0
  71. package/dist/services/zns.service.d.ts +116 -0
  72. package/dist/services/zns.service.d.ts.map +1 -0
  73. package/dist/services/zns.service.js +234 -0
  74. package/dist/services/zns.service.js.map +1 -0
  75. package/dist/types/article.d.ts +352 -0
  76. package/dist/types/article.d.ts.map +1 -0
  77. package/dist/types/article.js +70 -0
  78. package/dist/types/article.js.map +1 -0
  79. package/dist/types/auth.d.ts +233 -0
  80. package/dist/types/auth.d.ts.map +1 -0
  81. package/dist/types/auth.js +39 -0
  82. package/dist/types/auth.js.map +1 -0
  83. package/dist/types/common.d.ts +237 -0
  84. package/dist/types/common.d.ts.map +1 -0
  85. package/dist/types/common.js +42 -0
  86. package/dist/types/common.js.map +1 -0
  87. package/dist/types/group.d.ts +523 -0
  88. package/dist/types/group.d.ts.map +1 -0
  89. package/dist/types/group.js +6 -0
  90. package/dist/types/group.js.map +1 -0
  91. package/dist/types/message.d.ts +333 -0
  92. package/dist/types/message.d.ts.map +1 -0
  93. package/dist/types/message.js +17 -0
  94. package/dist/types/message.js.map +1 -0
  95. package/dist/types/oa.d.ts +285 -0
  96. package/dist/types/oa.d.ts.map +1 -0
  97. package/dist/types/oa.js +25 -0
  98. package/dist/types/oa.js.map +1 -0
  99. package/dist/types/social.d.ts +427 -0
  100. package/dist/types/social.d.ts.map +1 -0
  101. package/dist/types/social.js +6 -0
  102. package/dist/types/social.js.map +1 -0
  103. package/dist/types/user-management.d.ts +280 -0
  104. package/dist/types/user-management.d.ts.map +1 -0
  105. package/dist/types/user-management.js +6 -0
  106. package/dist/types/user-management.js.map +1 -0
  107. package/dist/types/user.d.ts +365 -0
  108. package/dist/types/user.d.ts.map +1 -0
  109. package/dist/types/user.js +17 -0
  110. package/dist/types/user.js.map +1 -0
  111. package/dist/types/webhook.d.ts +1972 -0
  112. package/dist/types/webhook.d.ts.map +1 -0
  113. package/dist/types/webhook.js +419 -0
  114. package/dist/types/webhook.js.map +1 -0
  115. package/dist/types/zns.d.ts +277 -0
  116. package/dist/types/zns.d.ts.map +1 -0
  117. package/dist/types/zns.js +6 -0
  118. package/dist/types/zns.js.map +1 -0
  119. package/dist/zalo-sdk.d.ts +228 -0
  120. package/dist/zalo-sdk.d.ts.map +1 -0
  121. package/dist/zalo-sdk.js +307 -0
  122. package/dist/zalo-sdk.js.map +1 -0
  123. package/package.json +59 -0
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ /**
3
+ * Base HTTP client for Zalo API
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.BaseClient = void 0;
43
+ const axios_1 = __importStar(require("axios"));
44
+ const form_data_1 = __importDefault(require("form-data"));
45
+ const common_1 = require("../types/common");
46
+ /**
47
+ * Base client for making HTTP requests to Zalo API
48
+ */
49
+ class BaseClient {
50
+ constructor(config) {
51
+ // Set default configuration
52
+ this.config = {
53
+ appId: config.appId,
54
+ appSecret: config.appSecret,
55
+ timeout: config.timeout || 30000,
56
+ debug: config.debug || false,
57
+ apiBaseUrl: config.apiBaseUrl || "https://openapi.zalo.me",
58
+ retry: {
59
+ attempts: config.retry?.attempts || 3,
60
+ delay: config.retry?.delay || 1000,
61
+ ...config.retry,
62
+ },
63
+ };
64
+ this.logger = new common_1.ConsoleLogger(this.config.debug);
65
+ // Create axios instance
66
+ this.axios = axios_1.default.create({
67
+ baseURL: this.config.apiBaseUrl,
68
+ timeout: this.config.timeout,
69
+ headers: {
70
+ "Content-Type": "application/json",
71
+ "User-Agent": "RedAI-Zalo-SDK/1.0.0",
72
+ },
73
+ });
74
+ this.setupInterceptors();
75
+ }
76
+ /**
77
+ * Setup axios interceptors for logging and error handling
78
+ */
79
+ setupInterceptors() {
80
+ // Request interceptor
81
+ this.axios.interceptors.request.use((config) => {
82
+ this.logger.debug(`Making ${config.method?.toUpperCase()} request to ${config.url}`, {
83
+ headers: this.sanitizeHeaders(config.headers || {}),
84
+ params: config.params,
85
+ });
86
+ return config;
87
+ }, (error) => {
88
+ this.logger.error("Request setup error:", error.message);
89
+ return Promise.reject(error);
90
+ });
91
+ // Response interceptor
92
+ this.axios.interceptors.response.use((response) => {
93
+ this.logger.debug(`Received response from ${response.config.url}`, {
94
+ status: response.status,
95
+ data: response.data,
96
+ });
97
+ return response;
98
+ }, (error) => {
99
+ this.handleAxiosError(error);
100
+ return Promise.reject(error);
101
+ });
102
+ }
103
+ /**
104
+ * Sanitize headers for logging (remove sensitive information)
105
+ */
106
+ sanitizeHeaders(headers) {
107
+ const sanitized = { ...headers };
108
+ if (sanitized.access_token) {
109
+ sanitized.access_token = "***REDACTED***";
110
+ }
111
+ if (sanitized.secret_key) {
112
+ sanitized.secret_key = "***REDACTED***";
113
+ }
114
+ return sanitized;
115
+ }
116
+ /**
117
+ * Handle axios errors and log them
118
+ */
119
+ handleAxiosError(error) {
120
+ if (error.response) {
121
+ this.logger.error(`HTTP ${error.response.status} error:`, {
122
+ url: error.config?.url,
123
+ status: error.response.status,
124
+ statusText: error.response.statusText,
125
+ data: error.response.data,
126
+ });
127
+ }
128
+ else if (error.request) {
129
+ this.logger.error("No response received:", {
130
+ url: error.config?.url,
131
+ message: error.message,
132
+ });
133
+ }
134
+ else {
135
+ this.logger.error("Request setup error:", error.message);
136
+ }
137
+ }
138
+ /**
139
+ * Make a GET request
140
+ */
141
+ async get(url, accessToken, params) {
142
+ return this.request({
143
+ method: "GET",
144
+ url,
145
+ headers: accessToken ? { access_token: accessToken } : {},
146
+ params,
147
+ });
148
+ }
149
+ /**
150
+ * Make a POST request
151
+ */
152
+ async post(url, accessToken, data, params) {
153
+ return this.request({
154
+ method: "POST",
155
+ url,
156
+ headers: accessToken ? { access_token: accessToken } : {},
157
+ data,
158
+ params,
159
+ });
160
+ }
161
+ /**
162
+ * Make a PUT request
163
+ */
164
+ async put(url, accessToken, data, params) {
165
+ return this.request({
166
+ method: "PUT",
167
+ url,
168
+ headers: accessToken ? { access_token: accessToken } : {},
169
+ data,
170
+ params,
171
+ });
172
+ }
173
+ /**
174
+ * Make a DELETE request
175
+ */
176
+ async delete(url, accessToken, params) {
177
+ return this.request({
178
+ method: "DELETE",
179
+ url,
180
+ headers: accessToken ? { access_token: accessToken } : {},
181
+ params,
182
+ });
183
+ }
184
+ /**
185
+ * Upload file using FormData
186
+ */
187
+ async uploadFile(url, accessToken, file, filename, additionalFields) {
188
+ const formData = new form_data_1.default();
189
+ formData.append("file", file, filename);
190
+ if (additionalFields) {
191
+ Object.entries(additionalFields).forEach(([key, value]) => {
192
+ formData.append(key, value);
193
+ });
194
+ }
195
+ return this.request({
196
+ method: "POST",
197
+ url,
198
+ headers: {
199
+ access_token: accessToken,
200
+ "Content-Type": "multipart/form-data",
201
+ ...formData.getHeaders(),
202
+ },
203
+ data: formData,
204
+ });
205
+ }
206
+ /**
207
+ * Make a generic HTTP request with retry logic
208
+ */
209
+ async request(config) {
210
+ let lastError;
211
+ for (let attempt = 1; attempt <= (this.config.retry?.attempts || 3); attempt++) {
212
+ try {
213
+ const axiosConfig = {
214
+ method: config.method,
215
+ url: config.url,
216
+ headers: config.headers,
217
+ params: config.params,
218
+ data: config.data,
219
+ timeout: config.timeout || this.config.timeout,
220
+ };
221
+ const response = await this.axios.request(axiosConfig);
222
+ // Check for Zalo API errors in response
223
+ this.validateZaloResponse(response.data);
224
+ return response.data;
225
+ }
226
+ catch (error) {
227
+ lastError = error;
228
+ if (attempt < (this.config.retry?.attempts || 3) &&
229
+ this.shouldRetry(error)) {
230
+ this.logger.warn(`Request failed, retrying (${attempt}/${this.config.retry?.attempts || 3})...`);
231
+ await this.delay((this.config.retry?.delay || 1000) * attempt);
232
+ continue;
233
+ }
234
+ break;
235
+ }
236
+ }
237
+ throw this.createSDKError(lastError);
238
+ }
239
+ /**
240
+ * Validate Zalo API response for errors
241
+ */
242
+ validateZaloResponse(data) {
243
+ if (data && typeof data === "object") {
244
+ // Check for standard Zalo error format
245
+ if ("error" in data && data.error !== 0) {
246
+ const errorMessage = data.error_description || data.message || "Unknown Zalo API error";
247
+ throw new common_1.ZaloSDKError(errorMessage, data.error, data);
248
+ }
249
+ // Check for nested result error format
250
+ if ("result" in data &&
251
+ data.result &&
252
+ typeof data.result === "object" &&
253
+ "error" in data.result &&
254
+ data.result.error !== 0) {
255
+ const errorMessage = data.result.error_description ||
256
+ data.result.message ||
257
+ "Unknown Zalo API error";
258
+ throw new common_1.ZaloSDKError(errorMessage, data.result.error, data.result);
259
+ }
260
+ }
261
+ }
262
+ /**
263
+ * Determine if request should be retried
264
+ */
265
+ shouldRetry(error) {
266
+ // Retry on network errors or 5xx server errors
267
+ return (!error.response ||
268
+ (error.response.status >= 500 && error.response.status < 600));
269
+ }
270
+ /**
271
+ * Create SDK error from axios error
272
+ */
273
+ createSDKError(error) {
274
+ if (error instanceof common_1.ZaloSDKError) {
275
+ return error;
276
+ }
277
+ if (error instanceof axios_1.AxiosError) {
278
+ const response = error.response;
279
+ if (response?.data) {
280
+ const errorCode = response.data.error || response.status;
281
+ const errorMessage = response.data.error_description ||
282
+ response.data.message ||
283
+ error.message;
284
+ return new common_1.ZaloSDKError(errorMessage, errorCode, response.data);
285
+ }
286
+ }
287
+ return new common_1.ZaloSDKError(error.message, -1, error);
288
+ }
289
+ /**
290
+ * Delay execution for specified milliseconds
291
+ */
292
+ delay(ms) {
293
+ return new Promise((resolve) => setTimeout(resolve, ms));
294
+ }
295
+ }
296
+ exports.BaseClient = BaseClient;
297
+ //# sourceMappingURL=base-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/clients/base-client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAKe;AACf,0DAAiC;AACjC,4CAMyB;AAEzB;;GAEG;AACH,MAAa,UAAU;IAKrB,YAAY,MAAqB;QAC/B,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;YAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,yBAAyB;YAC1D,KAAK,EAAE;gBACL,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC;gBACrC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI;gBAClC,GAAG,MAAM,CAAC,KAAK;aAChB;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnD,wBAAwB;QACxB,IAAI,CAAC,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC/B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,sBAAsB;aACrC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CACjC,CAAC,MAAW,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,UAAU,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,MAAM,CAAC,GAAG,EAAE,EACjE;gBACE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnD,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CACF,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CAAC,KAAU,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAClC,CAAC,QAAuB,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;gBACjE,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,CAAC,KAAiB,EAAE,EAAE;YACpB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAA4B;QAClD,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC3B,SAAS,CAAC,YAAY,GAAG,gBAAgB,CAAC;QAC5C,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,SAAS,CAAC,UAAU,GAAG,gBAAgB,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAiB;QACxC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,SAAS,EAAE;gBACxD,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;gBACtB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;gBAC7B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;gBACrC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;aAC1B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACzC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,GAAG,CACjB,GAAW,EACX,WAAoB,EACpB,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAI;YACrB,MAAM,EAAE,KAAK;YACb,GAAG;YACH,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACzD,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,IAAI,CAClB,GAAW,EACX,WAAoB,EACpB,IAAU,EACV,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAI;YACrB,MAAM,EAAE,MAAM;YACd,GAAG;YACH,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACzD,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,GAAG,CACjB,GAAW,EACX,WAAoB,EACpB,IAAU,EACV,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAI;YACrB,MAAM,EAAE,KAAK;YACb,GAAG;YACH,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACzD,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,MAAM,CACpB,GAAW,EACX,WAAoB,EACpB,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAI;YACrB,MAAM,EAAE,QAAQ;YAChB,GAAG;YACH,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACzD,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CACxB,GAAW,EACX,WAAmB,EACnB,IAAoC,EACpC,QAAgB,EAChB,gBAAsC;QAEtC,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAExC,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAI;YACrB,MAAM,EAAE,MAAM;YACd,GAAG;YACH,OAAO,EAAE;gBACP,YAAY,EAAE,WAAW;gBACzB,cAAc,EAAE,qBAAqB;gBACrC,GAAG,QAAQ,CAAC,UAAU,EAAE;aACzB;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAO,CAAU,MAAqB;QACpD,IAAI,SAAgB,CAAC;QAErB,KACE,IAAI,OAAO,GAAG,CAAC,EACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,EAC7C,OAAO,EAAE,EACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAuB;oBACtC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;iBAC/C,CAAC;gBAEF,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACzD,WAAW,CACZ,CAAC;gBAEF,wCAAwC;gBACxC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEzC,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAc,CAAC;gBAE3B,IACE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,WAAW,CAAC,KAAmB,CAAC,EACrC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,OAAO,IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,CACjC,MAAM,CACP,CAAC;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;oBAC/D,SAAS;gBACX,CAAC;gBAED,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,IAAS;QACpC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,uCAAuC;YACvC,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,YAAY,GAChB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC;gBACrE,MAAM,IAAI,qBAAY,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC;YAED,uCAAuC;YACvC,IACE,QAAQ,IAAI,IAAI;gBAChB,IAAI,CAAC,MAAM;gBACX,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAC/B,OAAO,IAAI,IAAI,CAAC,MAAM;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EACvB,CAAC;gBACD,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB;oBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO;oBACnB,wBAAwB,CAAC;gBAC3B,MAAM,IAAI,qBAAY,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB;QACnC,+CAA+C;QAC/C,OAAO,CACL,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAY;QACjC,IAAI,KAAK,YAAY,qBAAY,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,YAAY,kBAAU,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAI,KAAa,CAAC,QAAQ,CAAC;YACzC,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;gBACzD,MAAM,YAAY,GAChB,QAAQ,CAAC,IAAI,CAAC,iBAAiB;oBAC/B,QAAQ,CAAC,IAAI,CAAC,OAAO;oBACrB,KAAK,CAAC,OAAO,CAAC;gBAChB,OAAO,IAAI,qBAAY,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,qBAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAxUD,gCAwUC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Main Zalo API client
3
+ */
4
+ import { BaseClient } from "./base-client";
5
+ import { ZaloSDKConfig } from "../types/common";
6
+ /**
7
+ * Zalo API client with specific endpoints
8
+ */
9
+ export declare class ZaloClient extends BaseClient {
10
+ readonly endpoints: {
11
+ auth: {
12
+ oaAuth: string;
13
+ socialAuth: string;
14
+ oaToken: string;
15
+ socialToken: string;
16
+ refreshOaToken: string;
17
+ refreshSocialToken: string;
18
+ };
19
+ oa: {
20
+ info: string;
21
+ quota: string;
22
+ quotaMessage: string;
23
+ };
24
+ user: {
25
+ info: string;
26
+ list: string;
27
+ update: string;
28
+ tags: string;
29
+ addTag: string;
30
+ removeTag: string;
31
+ };
32
+ message: {
33
+ send: string;
34
+ sendTransaction: string;
35
+ sendPromotion: string;
36
+ sendAnonymous: string;
37
+ };
38
+ upload: {
39
+ image: string;
40
+ file: string;
41
+ };
42
+ article: {
43
+ create: string;
44
+ update: string;
45
+ remove: string;
46
+ verify: string;
47
+ detail: string;
48
+ list: string;
49
+ uploadVideo: string;
50
+ checkVideoStatus: string;
51
+ videoInfo: string;
52
+ };
53
+ group: {
54
+ create: string;
55
+ list: string;
56
+ detail: string;
57
+ update: string;
58
+ updateAvatar: string;
59
+ delete: string;
60
+ members: string;
61
+ invite: string;
62
+ pendingMembers: string;
63
+ acceptPending: string;
64
+ rejectPending: string;
65
+ removeMembers: string;
66
+ addAdmins: string;
67
+ removeAdmins: string;
68
+ sendMessage: string;
69
+ conversation: string;
70
+ recentChats: string;
71
+ quota: string;
72
+ };
73
+ zns: {
74
+ templates: string;
75
+ templateDetail: string;
76
+ createTemplate: string;
77
+ updateTemplate: string;
78
+ deleteTemplate: string;
79
+ sendMessage: string;
80
+ sendHashPhone: string;
81
+ sendJourney: string;
82
+ uploadImage: string;
83
+ quality: string;
84
+ };
85
+ social: {
86
+ userInfo: string;
87
+ };
88
+ };
89
+ constructor(config: ZaloSDKConfig);
90
+ /**
91
+ * Get full URL for an endpoint
92
+ */
93
+ getEndpointUrl(endpoint: string, baseUrl?: string): string;
94
+ /**
95
+ * Make authenticated GET request to Zalo API
96
+ */
97
+ apiGet<T = any>(endpoint: string, accessToken: string, params?: Record<string, any>): Promise<T>;
98
+ /**
99
+ * Make authenticated POST request to Zalo API
100
+ */
101
+ apiPost<T = any>(endpoint: string, accessToken: string, data?: any, params?: Record<string, any>): Promise<T>;
102
+ /**
103
+ * Make authenticated PUT request to Zalo API
104
+ */
105
+ apiPut<T = any>(endpoint: string, accessToken: string, data?: any, params?: Record<string, any>): Promise<T>;
106
+ /**
107
+ * Make authenticated DELETE request to Zalo API
108
+ */
109
+ apiDelete<T = any>(endpoint: string, accessToken: string, params?: Record<string, any>): Promise<T>;
110
+ /**
111
+ * Upload file to Zalo API
112
+ */
113
+ apiUploadFile<T = any>(endpoint: string, accessToken: string, file: Buffer | NodeJS.ReadableStream, filename: string, additionalFields?: Record<string, any>): Promise<T>;
114
+ /**
115
+ * Make POST request with FormData (for file uploads)
116
+ */
117
+ apiPostFormData<T = any>(endpoint: string, accessToken: string, formData: FormData): Promise<T>;
118
+ /**
119
+ * Make request to OAuth endpoints (without access token)
120
+ */
121
+ oauthRequest<T = any>(method: "GET" | "POST", endpoint: string, data?: any, headers?: Record<string, string>): Promise<T>;
122
+ /**
123
+ * Make request to ZNS API (different base URL)
124
+ */
125
+ znsRequest<T = any>(method: "GET" | "POST" | "PUT" | "DELETE", endpoint: string, accessToken: string, data?: any, params?: Record<string, any>): Promise<T>;
126
+ /**
127
+ * Make request to OAuth endpoints with custom base URL
128
+ */
129
+ oauthRequestWithUrl<T = any>(method: "GET" | "POST", url: string, data?: any, headers?: Record<string, string>): Promise<T>;
130
+ }
131
+ //# sourceMappingURL=zalo-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zalo-client.d.ts","sourceRoot":"","sources":["../../src/clients/zalo-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * Main Zalo API client
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ZaloClient = void 0;
7
+ const base_client_1 = require("./base-client");
8
+ /**
9
+ * Zalo API client with specific endpoints
10
+ */
11
+ class ZaloClient extends base_client_1.BaseClient {
12
+ constructor(config) {
13
+ super(config);
14
+ // API endpoints
15
+ this.endpoints = {
16
+ // Authentication endpoints
17
+ auth: {
18
+ oaAuth: "/v4/oa/permission",
19
+ socialAuth: "/v4/permission",
20
+ oaToken: "/v2.0/oa/oauth/access_token",
21
+ socialToken: "/v4/access_token",
22
+ refreshOaToken: "/v4/oa/access_token",
23
+ refreshSocialToken: "/v2.0/oauth/access_token",
24
+ },
25
+ // Official Account endpoints
26
+ oa: {
27
+ info: "/v2.0/oa/getoa",
28
+ quota: "/v2.0/oa/quota",
29
+ quotaMessage: "/v3.0/oa/quota/message",
30
+ },
31
+ // User management endpoints
32
+ user: {
33
+ info: "/v3.0/oa/user/detail",
34
+ list: "/v3.0/oa/user/getlist",
35
+ update: "/v3.0/oa/user/update",
36
+ tags: "/v3.0/oa/tag/gettagsofuser",
37
+ addTag: "/v3.0/oa/tag/taguser",
38
+ removeTag: "/v3.0/oa/tag/rmtaguser",
39
+ },
40
+ // Message endpoints
41
+ message: {
42
+ send: "/v3.0/oa/message/cs",
43
+ sendTransaction: "/v3.0/oa/message/transaction",
44
+ sendPromotion: "/v3.0/oa/message/promotion",
45
+ sendAnonymous: "/v3.0/oa/message/anonymous",
46
+ },
47
+ // Upload endpoints
48
+ upload: {
49
+ image: "/v2.0/oa/upload/image",
50
+ file: "/v2.0/oa/upload/file",
51
+ },
52
+ // Article management endpoints
53
+ article: {
54
+ // Article CRUD operations
55
+ create: "/v2.0/article/create",
56
+ update: "/v2.0/article/update",
57
+ remove: "/v2.0/article/remove",
58
+ verify: "/v2.0/article/verify",
59
+ // Article information
60
+ detail: "/v2.0/article/getdetail",
61
+ list: "/v2.0/article/getslice",
62
+ // Video upload for articles
63
+ uploadVideo: "/v2.0/article/upload_video/preparevideo",
64
+ checkVideoStatus: "/v2.0/article/upload_video/verify",
65
+ videoInfo: "/v2.0/article/video/info",
66
+ },
67
+ // Group message endpoints (GMF)
68
+ group: {
69
+ // Group management
70
+ create: "/v3.0/oa/group/creategroupwithoa",
71
+ list: "/v3.0/oa/group/getgroupsofoa",
72
+ detail: "/v3.0/oa/group/getgroup",
73
+ update: "/v3.0/oa/group/info",
74
+ updateAvatar: "/v3.0/oa/group/avatar",
75
+ delete: "/v3.0/oa/group/delete",
76
+ // Member management
77
+ members: "/v3.0/oa/group/listmember",
78
+ invite: "/v3.0/oa/group/invite",
79
+ pendingMembers: "/v3.0/oa/group/listpendinginvite",
80
+ acceptPending: "/v3.0/oa/group/acceptpendinginvite",
81
+ rejectPending: "/v3.0/oa/group/rejectpendinginvite",
82
+ removeMembers: "/v3.0/oa/group/removemembers",
83
+ // Admin management
84
+ addAdmins: "/v3.0/oa/group/addadmins",
85
+ removeAdmins: "/v3.0/oa/group/removeadmins",
86
+ // Messaging
87
+ sendMessage: "/v3.0/oa/group/message",
88
+ conversation: "/v3.0/oa/group/conversation",
89
+ recentChats: "/v3.0/oa/group/recent",
90
+ // Quota and assets
91
+ quota: "/v3.0/oa/quota/group",
92
+ },
93
+ // ZNS endpoints
94
+ zns: {
95
+ templates: "/template/all",
96
+ templateDetail: "/template/info",
97
+ createTemplate: "/template/create",
98
+ updateTemplate: "/template/update",
99
+ deleteTemplate: "/template/delete",
100
+ sendMessage: "/message/template",
101
+ sendHashPhone: "/message/template/hash_phone",
102
+ sendJourney: "/message/template/journey",
103
+ uploadImage: "/template/upload_image",
104
+ quality: "/template/quality",
105
+ },
106
+ // Social API endpoints
107
+ social: {
108
+ userInfo: "/v2.0/me",
109
+ },
110
+ };
111
+ }
112
+ /**
113
+ * Get full URL for an endpoint
114
+ */
115
+ getEndpointUrl(endpoint, baseUrl) {
116
+ const base = baseUrl || this.config.apiBaseUrl;
117
+ return `${base}${endpoint}`;
118
+ }
119
+ /**
120
+ * Make authenticated GET request to Zalo API
121
+ */
122
+ async apiGet(endpoint, accessToken, params) {
123
+ return this.get(endpoint, accessToken, params);
124
+ }
125
+ /**
126
+ * Make authenticated POST request to Zalo API
127
+ */
128
+ async apiPost(endpoint, accessToken, data, params) {
129
+ return this.post(endpoint, accessToken, data, params);
130
+ }
131
+ /**
132
+ * Make authenticated PUT request to Zalo API
133
+ */
134
+ async apiPut(endpoint, accessToken, data, params) {
135
+ return this.put(endpoint, accessToken, data, params);
136
+ }
137
+ /**
138
+ * Make authenticated DELETE request to Zalo API
139
+ */
140
+ async apiDelete(endpoint, accessToken, params) {
141
+ return this.delete(endpoint, accessToken, params);
142
+ }
143
+ /**
144
+ * Upload file to Zalo API
145
+ */
146
+ async apiUploadFile(endpoint, accessToken, file, filename, additionalFields) {
147
+ return this.uploadFile(endpoint, accessToken, file, filename, additionalFields);
148
+ }
149
+ /**
150
+ * Make POST request with FormData (for file uploads)
151
+ */
152
+ async apiPostFormData(endpoint, accessToken, formData) {
153
+ const fullUrl = `${this.config.apiBaseUrl}${endpoint}`;
154
+ return this.request({
155
+ method: "POST",
156
+ url: fullUrl,
157
+ headers: {
158
+ access_token: accessToken,
159
+ // Don't set Content-Type header, let the browser set it with boundary
160
+ },
161
+ data: formData,
162
+ });
163
+ }
164
+ /**
165
+ * Make request to OAuth endpoints (without access token)
166
+ */
167
+ async oauthRequest(method, endpoint, data, headers) {
168
+ const config = {
169
+ method,
170
+ url: endpoint,
171
+ headers,
172
+ data,
173
+ };
174
+ if (method === "GET") {
175
+ config.data = undefined;
176
+ return this.get(endpoint, undefined, data);
177
+ }
178
+ else {
179
+ return this.post(endpoint, undefined, data);
180
+ }
181
+ }
182
+ /**
183
+ * Make request to ZNS API (different base URL)
184
+ */
185
+ async znsRequest(method, endpoint, accessToken, data, params) {
186
+ const znsBaseUrl = "https://business.openapi.zalo.me";
187
+ const fullUrl = `${znsBaseUrl}${endpoint}`;
188
+ switch (method) {
189
+ case "GET":
190
+ return this.get(fullUrl, accessToken, params);
191
+ case "POST":
192
+ return this.post(fullUrl, accessToken, data, params);
193
+ case "PUT":
194
+ return this.put(fullUrl, accessToken, data, params);
195
+ case "DELETE":
196
+ return this.delete(fullUrl, accessToken, params);
197
+ default:
198
+ throw new Error(`Unsupported HTTP method: ${method}`);
199
+ }
200
+ }
201
+ /**
202
+ * Make request to OAuth endpoints with custom base URL
203
+ */
204
+ async oauthRequestWithUrl(method, url, data, headers) {
205
+ return this.request({
206
+ method,
207
+ url,
208
+ headers: headers || {},
209
+ data: method === "POST" ? data : undefined,
210
+ params: method === "GET" ? data : undefined,
211
+ });
212
+ }
213
+ }
214
+ exports.ZaloClient = ZaloClient;
215
+ //# sourceMappingURL=zalo-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zalo-client.js","sourceRoot":"","sources":["../../src/clients/zalo-client.ts"],"names":[],"mappings":"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"}