n8n-nodes-befroosh 0.1.0 → 0.2.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.
|
@@ -9,6 +9,37 @@ function toRecipients(raw) {
|
|
|
9
9
|
.map((s) => s.trim())
|
|
10
10
|
.filter(Boolean);
|
|
11
11
|
}
|
|
12
|
+
/** Render a provider response body for display without dumping megabytes. */
|
|
13
|
+
function describeBody(body) {
|
|
14
|
+
if (body === undefined || body === null || body === '')
|
|
15
|
+
return '(empty response body)';
|
|
16
|
+
const text = typeof body === 'string' ? body : JSON.stringify(body);
|
|
17
|
+
return text.length > 1500 ? `${text.slice(0, 1500)}…` : text;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Perform an HTTP request and ALWAYS return the status + body, even on 4xx/5xx,
|
|
21
|
+
* so the caller can surface the provider's own error explanation instead of a
|
|
22
|
+
* bare "Request failed with status code 400". Only genuine transport failures
|
|
23
|
+
* (DNS / TLS / timeout / connection reset) throw here — and they throw a
|
|
24
|
+
* NodeApiError that already carries the underlying message.
|
|
25
|
+
*/
|
|
26
|
+
async function sendRequest(ctx, provider, step, options, itemIndex) {
|
|
27
|
+
try {
|
|
28
|
+
const res = (await ctx.helpers.httpRequest({
|
|
29
|
+
...options,
|
|
30
|
+
returnFullResponse: true,
|
|
31
|
+
ignoreHttpStatusErrors: true,
|
|
32
|
+
}));
|
|
33
|
+
return { statusCode: res.statusCode, body: res.body };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new n8n_workflow_1.NodeApiError(ctx.getNode(), error, {
|
|
37
|
+
message: `${provider} · ${step}: request could not be sent`,
|
|
38
|
+
description: error.message,
|
|
39
|
+
itemIndex,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
12
43
|
class BefrooshSms {
|
|
13
44
|
constructor() {
|
|
14
45
|
this.description = {
|
|
@@ -106,22 +137,23 @@ class BefrooshSms {
|
|
|
106
137
|
};
|
|
107
138
|
}
|
|
108
139
|
async execute() {
|
|
140
|
+
var _a;
|
|
109
141
|
const items = this.getInputData();
|
|
110
142
|
const returnData = [];
|
|
111
143
|
for (let i = 0; i < items.length; i++) {
|
|
144
|
+
const provider = this.getNodeParameter('provider', i);
|
|
145
|
+
const operation = this.getNodeParameter('operation', i);
|
|
146
|
+
const to = this.getNodeParameter('to', i).trim();
|
|
112
147
|
try {
|
|
113
|
-
const provider = this.getNodeParameter('provider', i);
|
|
114
|
-
const operation = this.getNodeParameter('operation', i);
|
|
115
|
-
const to = this.getNodeParameter('to', i).trim();
|
|
116
148
|
const message = operation === 'sendMessage'
|
|
117
149
|
? this.getNodeParameter('message', i)
|
|
118
150
|
: '';
|
|
119
151
|
const otpCode = operation === 'sendOtp' ? this.getNodeParameter('otpCode', i) : '';
|
|
120
|
-
let
|
|
152
|
+
let result;
|
|
121
153
|
if (provider === 'notrika') {
|
|
122
154
|
const c = await this.getCredentials('notrikaSmsApi', i);
|
|
123
155
|
const isOtp = operation === 'sendOtp';
|
|
124
|
-
|
|
156
|
+
result = await sendRequest(this, 'Notrika', 'send', {
|
|
125
157
|
method: 'POST',
|
|
126
158
|
url: 'https://api.notrikaco.ir/api/v1/messages/send/template',
|
|
127
159
|
headers: {
|
|
@@ -140,25 +172,24 @@ class BefrooshSms {
|
|
|
140
172
|
: [{ name: 'message', value: message }],
|
|
141
173
|
},
|
|
142
174
|
json: true,
|
|
143
|
-
});
|
|
175
|
+
}, i);
|
|
144
176
|
}
|
|
145
177
|
else if (provider === 'batabjam') {
|
|
146
178
|
if (operation === 'sendOtp') {
|
|
147
179
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Batabjam does not support OTP — use Send Message.', { itemIndex: i });
|
|
148
180
|
}
|
|
149
181
|
const c = await this.getCredentials('batabjamSmsApi', i);
|
|
150
|
-
|
|
151
|
-
response = await this.helpers.httpRequest({
|
|
182
|
+
result = await sendRequest(this, 'Batabjam', 'send', {
|
|
152
183
|
method: 'POST',
|
|
153
184
|
url: 'https://smsapi.pishgamrayan.com/Messages/Send',
|
|
154
185
|
headers: { Authorization: c.token },
|
|
155
186
|
body: {
|
|
156
187
|
senderNumber: c.senderNumber,
|
|
157
|
-
recipientNumbers:
|
|
188
|
+
recipientNumbers: toRecipients(to),
|
|
158
189
|
messageBodies: [message],
|
|
159
190
|
},
|
|
160
191
|
json: true,
|
|
161
|
-
});
|
|
192
|
+
}, i);
|
|
162
193
|
}
|
|
163
194
|
else if (provider === 'melipayamak') {
|
|
164
195
|
const c = await this.getCredentials('meliPayamakSmsApi', i);
|
|
@@ -167,39 +198,69 @@ class BefrooshSms {
|
|
|
167
198
|
// HTTP GET (an HTTP POST form binding returns 404), so the credentials
|
|
168
199
|
// must travel in the query string — they cannot be moved to a body.
|
|
169
200
|
// We use HTTPS (valid cert) so the whole request, query string included,
|
|
170
|
-
// is encrypted in transit.
|
|
171
|
-
// here we upgrade to https. Residual: the URL (with creds) is still
|
|
201
|
+
// is encrypted in transit. Residual: the URL (with creds) is still
|
|
172
202
|
// recorded in n8n execution snapshots and the provider's own access logs
|
|
173
203
|
// — inherent to this provider's GET-only API.
|
|
174
204
|
const base = 'https://sms.toolzi.ir/post/Send.asmx';
|
|
175
205
|
const url = operation === 'sendOtp'
|
|
176
206
|
? `${base}/SendByBaseNumber?username=${enc(c.username)}&password=${enc(c.password)}&to=${enc(to)}&text=${enc(otpCode)}&bodyId=${enc(c.otpBodyId || '302565')}`
|
|
177
207
|
: `${base}/SendSimpleSMS2?username=${enc(c.username)}&password=${enc(c.password)}&to=${enc(to)}&from=${enc(c.senderNumber)}&text=${enc(message)}&isFlash=false`;
|
|
178
|
-
|
|
208
|
+
result = await sendRequest(this, 'MeliPayamak', 'send', {
|
|
179
209
|
method: 'GET',
|
|
180
210
|
url,
|
|
181
|
-
});
|
|
211
|
+
}, i);
|
|
182
212
|
}
|
|
183
213
|
else {
|
|
184
214
|
// batabjamAboard: login → bearer token → bulk send
|
|
185
215
|
const c = await this.getCredentials('batabjamAboardSmsApi', i);
|
|
186
|
-
const login =
|
|
216
|
+
const login = await sendRequest(this, 'Batabjam Aboard', 'login', {
|
|
187
217
|
method: 'POST',
|
|
188
218
|
url: 'https://panel.batabjam.com/api/login.php',
|
|
189
219
|
body: { username: c.username, password: c.password },
|
|
190
220
|
json: true,
|
|
191
|
-
})
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
221
|
+
}, i);
|
|
222
|
+
if (login.statusCode >= 400) {
|
|
223
|
+
// Surface the login failure (bad credentials etc.) with its body.
|
|
224
|
+
result = login;
|
|
195
225
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
226
|
+
else {
|
|
227
|
+
const token = (_a = login.body) === null || _a === void 0 ? void 0 : _a.token;
|
|
228
|
+
if (!token) {
|
|
229
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Batabjam Aboard login did not return a token. Response: ${describeBody(login.body)}`, { itemIndex: i });
|
|
230
|
+
}
|
|
231
|
+
const text = operation === 'sendOtp' ? `کد تایید بفروش شما: ${otpCode}` : message;
|
|
232
|
+
result = await sendRequest(this, 'Batabjam Aboard', 'send', {
|
|
233
|
+
method: 'POST',
|
|
234
|
+
url: 'https://panel.batabjam.com/api/send-bulk-sms.php',
|
|
235
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
236
|
+
body: { numbers: toRecipients(to), message: text },
|
|
237
|
+
json: true,
|
|
238
|
+
}, i);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// The provider answered — treat any 4xx/5xx as a failure and show WHY.
|
|
242
|
+
if (result.statusCode >= 400) {
|
|
243
|
+
const detail = describeBody(result.body);
|
|
244
|
+
if (this.continueOnFail()) {
|
|
245
|
+
returnData.push({
|
|
246
|
+
json: {
|
|
247
|
+
success: false,
|
|
248
|
+
provider,
|
|
249
|
+
operation,
|
|
250
|
+
to,
|
|
251
|
+
statusCode: result.statusCode,
|
|
252
|
+
error: `${provider} returned HTTP ${result.statusCode}`,
|
|
253
|
+
response: result.body,
|
|
254
|
+
},
|
|
255
|
+
pairedItem: { item: i },
|
|
256
|
+
});
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), { provider, statusCode: result.statusCode, body: result.body }, {
|
|
260
|
+
httpCode: String(result.statusCode),
|
|
261
|
+
message: `${provider} rejected the request (HTTP ${result.statusCode})`,
|
|
262
|
+
description: detail,
|
|
263
|
+
itemIndex: i,
|
|
203
264
|
});
|
|
204
265
|
}
|
|
205
266
|
returnData.push({
|
|
@@ -208,15 +269,25 @@ class BefrooshSms {
|
|
|
208
269
|
operation,
|
|
209
270
|
to,
|
|
210
271
|
success: true,
|
|
211
|
-
|
|
272
|
+
statusCode: result.statusCode,
|
|
273
|
+
response: result.body,
|
|
212
274
|
},
|
|
213
275
|
pairedItem: { item: i },
|
|
214
276
|
});
|
|
215
277
|
}
|
|
216
278
|
catch (error) {
|
|
217
279
|
if (this.continueOnFail()) {
|
|
280
|
+
const e = error;
|
|
218
281
|
returnData.push({
|
|
219
|
-
json: {
|
|
282
|
+
json: {
|
|
283
|
+
success: false,
|
|
284
|
+
provider,
|
|
285
|
+
operation,
|
|
286
|
+
to,
|
|
287
|
+
statusCode: e.httpCode ? Number(e.httpCode) : undefined,
|
|
288
|
+
error: e.message,
|
|
289
|
+
details: e.description,
|
|
290
|
+
},
|
|
220
291
|
pairedItem: { item: i },
|
|
221
292
|
});
|
|
222
293
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BefrooshSms.node.js","sourceRoot":"","sources":["../../../nodes/BefrooshSms/BefrooshSms.node.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"BefrooshSms.node.js","sourceRoot":"","sources":["../../../nodes/BefrooshSms/BefrooshSms.node.ts"],"names":[],"mappings":"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"}
|