zocrmsdkmiblu 0.2.4 → 0.2.6

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.
package/lib/js/util.js CHANGED
@@ -1,327 +1,268 @@
1
-
2
- function promiseResponse(request) {
3
-
4
- var crmclient = require('./ZCRMRestClient');
5
- var OAuth = require('./OAuth');
6
-
7
- return new Promise(function (resolve, reject) {
8
- var persistenceModule = require(crmclient.getPersistenceModule());
9
- getAuthToken().then(resp=>{
10
- makeapicall(request).then(function (response) {
11
-
12
- try {
13
- var isExpire = JSON.parse(response.body);
14
- if (isExpire.code == 'INVALID_TOKEN') {
15
- //Update Token
16
-
17
- getAuthToken(true).then(resp=>{
18
- makeapicall(request).then(function (response) {
19
-
20
- resolve(response);
21
-
22
- })
23
- })
24
- }else{
25
- resolve(response);
26
- }
27
- } catch (error) {
28
- resolve(response);
29
- }
30
-
31
- })
32
- })
33
-
34
- })
35
- }
36
-
37
-
38
- function makeapicall(request) {
39
-
40
- return new Promise(function (resolve, reject) {
41
-
42
- var crmclient = require('./ZCRMRestClient');
43
- var httpclient = require('request');
44
- var OAuth = require('./OAuth');
45
- var persistenceModule = require(crmclient.getPersistenceModule());
46
- var qs = require('querystring');
47
-
48
- persistenceModule.getOAuthTokens(crmclient.getUserIdentifier()).then(function (result_obj) {
49
- var access_token = result_obj.access_token;
50
- var allrecords = request.all || null
51
- var baseUrl = "https://" + crmclient.getAPIURL() + "/crm/" + crmclient.getVersion(allrecords) + "/" + request.url;
52
- if (request.params) {
53
- baseUrl = baseUrl + '?' + request.params;
54
- }
55
-
56
- var api_headers = {};
57
- var encoding = "utf8";
58
- var req_body = null;
59
- var formData = null;
60
-
61
- if (request.download_file) {
62
- encoding = "binary";//No I18N
63
- }
64
-
65
- var form_Data = null;
66
-
67
- if (request.x_file_content) {
68
- var FormData = require('form-data');
69
- form_Data = new FormData();
70
- form_Data.append('file', request.x_file_content);//No I18N
71
- req_body = form_Data;
72
- api_headers = form_Data.getHeaders();
73
- }
74
- else {
75
- req_body = request.body || null;
76
- }
77
-
78
- if (request.headers) {
79
- var header_keys = Object.keys(request.headers);
80
- for (i in header_keys) {
81
- api_headers[header_keys[i]] = request.headers[header_keys[i]];
82
- }
83
- }
84
-
85
- api_headers.Authorization = 'Zoho-oauthtoken ' + access_token;
86
- api_headers["User-Agent"] = 'Zoho CRM Node SDK';
87
-
88
- /* console.log({
89
-
90
- uri: baseUrl,
91
- method: request.type,
92
- headers: api_headers,
93
- body: req_body,
94
- encoding: encoding
95
-
96
- },crmclient.getVersion(allrecords)); */
97
- httpclient({
98
-
99
- uri: baseUrl,
100
- method: request.type,
101
- headers: api_headers,
102
- body: req_body,
103
- encoding: encoding
104
-
105
- }, function (error, response, body) {
106
-
107
- if (error) {
108
- resolve(error);
109
- }
110
- else if (response.statusCode == 204) {
111
-
112
- var respObj = {
113
- "message": "no data", //No I18N
114
- "status_code": "204" //No I18N
115
- }
116
- resolve(JSON.stringify(respObj));
117
-
118
- } else {
119
- if (request.download_file) {
120
-
121
- var filename;
122
- var disposition = response.headers["content-disposition"];//No I18N
123
- if (disposition && disposition.indexOf('attachment') !== -1) {
124
- var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
125
- var matches = filenameRegex.exec(disposition);
126
- if (matches != null && matches[1]) {
127
- filename = matches[1].replace(/['"]/g, '');
128
- filename = filename.replace('UTF-8', '');
129
- }
130
- }
131
- response.filename = filename;
132
- resolve(response);
133
- }
134
- else {
135
- resolve(response);
136
- }
137
- }
138
- });
139
- })
140
- })
141
- }
142
- function getAuthToken(isInvalid) {
143
-
144
- var crmclient = require('./ZCRMRestClient');
145
- var OAuth = require('./OAuth');
146
-
147
-
148
- return new Promise(function (resolve, reject) {
149
-
150
- var persistenceModule = require(crmclient.getPersistenceModule());
151
-
152
- persistenceModule.getOAuthTokens(crmclient.getUserIdentifier()).then(function (response) {
153
-
154
- var date = new Date();
155
- var current_time = date.getTime();
156
- var access_token = response.access_token;
157
- var expires_in = response.expires_in;
158
- var refresh_token = response.refresh_token;
159
- var result_obj = (response);
160
-
161
- if ((current_time > expires_in) || isInvalid) {
162
- if(isInvalid)console.info("============== REGENERATE TOKEN BY INVALID =============");
163
- if(!isInvalid)console.info("============== REGENERATE TOKEN BY TIME =============");
164
-
165
- var config = crmclient.getConfig_refresh(refresh_token)
166
- new OAuth(config, 'refresh_access_token');
167
- var url = OAuth.constructurl('generate_token');
168
- OAuth.generateTokens(url).then(function (response) {
169
-
170
- result_obj = crmclient.parseAndConstructObject(response);
171
-
172
- persistenceModule.updateOAuthTokens(result_obj).then(function (response) {
173
- resolve(result_obj);
174
- });
175
- })
176
- }
177
-
178
-
179
- else {
180
- //console.info("============== TOKEN NO EXPIRADO =============")
181
- resolve(result_obj);
182
- }
183
- })
184
- })
185
- }
186
-
187
- function createParams(parameters) {
188
-
189
- var params, key;
190
- for (key in parameters) {
191
- if (parameters.hasOwnProperty(key)) {
192
- if (params) {
193
- params = params + key + '=' + parameters[key] + '&';
194
- }
195
- else {
196
- params = key + '=' + parameters[key] + '&';
197
- }
198
- }
199
- }
200
-
201
- return params;
202
- }
203
-
204
- function constructRequestDetails(input, url, type, isModuleParam) {
205
-
206
- var requestDetails = {};
207
-
208
- requestDetails.type = type;
209
-
210
- if (input != undefined) {
211
- if (input.id) {
212
- url = url.replace("{id}", input.id);
213
- }
214
- else {
215
- url = url.replace("/{id}", "");
216
- }
217
- if (input.api_name) {
218
-
219
- url = url.replace("{api_name}", input.api_name);
220
-
221
-
222
- var params = {};
223
- if (input.params) {
224
-
225
- params = input.params;
226
- }
227
- params.auth_type = "apikey";
228
- input.params = params;
229
- }
230
- else {
231
-
232
- url = url.replace("/{api_name}", "");
233
-
234
- }
235
- if (input.params) {
236
- requestDetails.params = createParams(input.params) + (input.module && isModuleParam ? "module=" + input.module : "");//No I18N
237
- }
238
- if (!requestDetails.params && isModuleParam) {
239
- requestDetails.params = "module=" + input.module;//No I18N
240
- }
241
- if (input.body && (type == HTTP_METHODS.POST || type == HTTP_METHODS.PUT)) {
242
- requestDetails.body = JSON.stringify(input.body);
243
- }
244
- if (input.x_file_content) {
245
- requestDetails.x_file_content = input.x_file_content;
246
- }
247
- if (input.download_file) {
248
- requestDetails.download_file = input.download_file;
249
- }
250
- if (input.headers) {
251
-
252
- requestDetails.headers = input.headers;
253
- }
254
- }
255
-
256
- requestDetails.url = url;
257
-
258
- return requestDetails;
259
-
260
-
261
- }
262
- function convertToCOQLQuery(inputText, fields, module,page,per_page) {
263
- const conditions = inputText.split(/\b(and|or)\b/i);
264
-
265
- const queryParts = [];
266
- let operator = 'AND'; // Operador predeterminado
267
- const operatorsWithGrouping = ['equals', 'starts_with', 'in', '>='];
268
- let currentEqualsLikeGroup = [];
269
- let currentBetweenGroup = [];
270
-
271
- conditions.forEach(condition => {
272
- const cleanCondition = condition.trim();
273
- if (cleanCondition.match(/^(and|or)$/i)) {
274
- operator = cleanCondition.toLowerCase();
275
- } else {
276
- const [field, op, value] = cleanCondition
277
- .replace(/\(|\)/g, '') // Eliminar paréntesis
278
- .split(':');
279
-
280
- if (op === 'between') {
281
- const [start, end] = value.split(',');
282
- currentBetweenGroup.push(`${field} between '${start}' and '${end}'`);
283
- }
284
- else if (op === 'in') {
285
- const elements = value.split(',');
286
- currentEqualsLikeGroup.push(`${field} in (${elements.map(el => `'${el.trim()}'`).join(', ')})`);
287
- }
288
- else if (op === 'is not null') {
289
-
290
- currentBetweenGroup.push(`(${field} is not null)`);
291
- }
292
- else if (operatorsWithGrouping.includes(op)) {
293
- currentEqualsLikeGroup.push(`(${field} ${op === 'equals' ? '=' : op} '${value}')`);
294
- } else {
295
- queryParts.push(currentEqualsLikeGroup.join(` ${operator} `));
296
- currentEqualsLikeGroup = [];
297
- }
298
- }
299
- });
300
- if (currentEqualsLikeGroup.length > 0) {
301
- queryParts.push(`(${currentEqualsLikeGroup.join(` ${operator} `)})`);
302
- }
303
- if (currentBetweenGroup.length > 0) {
304
- queryParts.push(`(${currentBetweenGroup.join(` AND `)})`);
305
- }
306
-
307
- const finalQuery = `SELECT ${fields} FROM ${module} WHERE ${queryParts.join(` ${operator} `)} LIMIT ${[page*per_page,per_page]}`;
308
-
309
- return finalQuery;
310
- }
311
- function calculateLimit(pageNumber, resultsPerPage) {
312
- if (pageNumber < 0) {
313
- throw new Error('El número de página debe ser mayor o igual a 0.');
314
- }
315
-
316
- const lowerLimit = pageNumber * resultsPerPage;
317
- const upperLimit = (pageNumber + 1) * resultsPerPage;
318
-
319
- return [pageNumber, resultsPerPage];
320
- }
321
- module.exports = {
322
-
323
- constructRequestDetails: constructRequestDetails,
324
- promiseResponse: promiseResponse,
325
- getAuthToken: getAuthToken,
326
- convertToCOQLQuery: convertToCOQLQuery
1
+
2
+ function promiseResponse(request) {
3
+
4
+ var crmclient = require('./ZCRMRestClient');
5
+ var OAuth = require('./OAuth');
6
+
7
+ return new Promise(function (resolve, reject) {
8
+ var persistenceModule = require(crmclient.getPersistenceModule());
9
+ getAuthToken().then(resp=>{
10
+ makeapicall(request).then(function (response) {
11
+
12
+ try {
13
+ var isExpire = JSON.parse(response.body);
14
+ if (isExpire.code == 'INVALID_TOKEN') {
15
+ //Update Token
16
+
17
+ getAuthToken(true).then(resp=>{
18
+ makeapicall(request).then(function (response) {
19
+
20
+ resolve(response);
21
+
22
+ })
23
+ })
24
+ }else{
25
+ resolve(response);
26
+ }
27
+ } catch (error) {
28
+ resolve(response);
29
+ }
30
+
31
+ })
32
+ })
33
+
34
+ })
35
+ }
36
+
37
+
38
+ function makeapicall(request) {
39
+
40
+ return new Promise(function (resolve, reject) {
41
+
42
+ var crmclient = require('./ZCRMRestClient');
43
+ var httpclient = require('request');
44
+ var OAuth = require('./OAuth');
45
+ var persistenceModule = require(crmclient.getPersistenceModule());
46
+ var qs = require('querystring');
47
+
48
+ persistenceModule.getOAuthTokens(crmclient.getUserIdentifier()).then(function (result_obj) {
49
+ var access_token = result_obj.access_token;
50
+ var allrecords = request.all || null
51
+ var baseUrl = "https://" + crmclient.getAPIURL() + "/crm/" + crmclient.getVersion(allrecords) + "/" + request.url;
52
+ if (request.params) {
53
+ baseUrl = baseUrl + '?' + request.params;
54
+ }
55
+
56
+ var api_headers = {};
57
+ var encoding = "utf8";
58
+ var req_body = null;
59
+ var formData = null;
60
+
61
+ if (request.download_file) {
62
+ encoding = "binary";//No I18N
63
+ }
64
+
65
+ var form_Data = null;
66
+
67
+ if (request.x_file_content) {
68
+ var FormData = require('form-data');
69
+ form_Data = new FormData();
70
+ form_Data.append('file', request.x_file_content);//No I18N
71
+ req_body = form_Data;
72
+ api_headers = form_Data.getHeaders();
73
+ }
74
+ else {
75
+ req_body = request.body || null;
76
+ }
77
+
78
+ if (request.headers) {
79
+ var header_keys = Object.keys(request.headers);
80
+ for (i in header_keys) {
81
+ api_headers[header_keys[i]] = request.headers[header_keys[i]];
82
+ }
83
+ }
84
+
85
+ api_headers.Authorization = 'Zoho-oauthtoken ' + access_token;
86
+ api_headers["User-Agent"] = 'Zoho CRM Node SDK';
87
+
88
+ /* console.log({
89
+
90
+ uri: baseUrl,
91
+ method: request.type,
92
+ headers: api_headers,
93
+ body: req_body,
94
+ encoding: encoding
95
+
96
+ },crmclient.getVersion(allrecords)); */
97
+ httpclient({
98
+
99
+ uri: baseUrl,
100
+ method: request.type,
101
+ headers: api_headers,
102
+ body: req_body,
103
+ encoding: encoding
104
+
105
+ }, function (error, response, body) {
106
+
107
+ if (error) {
108
+ resolve(error);
109
+ }
110
+ else if (response.statusCode == 204) {
111
+
112
+ var respObj = {
113
+ "message": "no data", //No I18N
114
+ "status_code": "204" //No I18N
115
+ }
116
+ resolve(JSON.stringify(respObj));
117
+
118
+ } else {
119
+ if (request.download_file) {
120
+
121
+ var filename;
122
+ var disposition = response.headers["content-disposition"];//No I18N
123
+ if (disposition && disposition.indexOf('attachment') !== -1) {
124
+ var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
125
+ var matches = filenameRegex.exec(disposition);
126
+ if (matches != null && matches[1]) {
127
+ filename = matches[1].replace(/['"]/g, '');
128
+ filename = filename.replace('UTF-8', '');
129
+ }
130
+ }
131
+ response.filename = filename;
132
+ resolve(response);
133
+ }
134
+ else {
135
+ resolve(response);
136
+ }
137
+ }
138
+ });
139
+ })
140
+ })
141
+ }
142
+ function getAuthToken(isInvalid) {
143
+
144
+ var crmclient = require('./ZCRMRestClient');
145
+ var OAuth = require('./OAuth');
146
+
147
+
148
+ return new Promise(function (resolve, reject) {
149
+
150
+ var persistenceModule = require(crmclient.getPersistenceModule());
151
+
152
+ persistenceModule.getOAuthTokens(crmclient.getUserIdentifier()).then(function (response) {
153
+
154
+ var date = new Date();
155
+ var current_time = date.getTime();
156
+ var access_token = response.access_token;
157
+ var expires_in = response.expires_in;
158
+ var refresh_token = response.refresh_token;
159
+ var result_obj = (response);
160
+
161
+ if ((current_time > expires_in) || isInvalid) {
162
+ if(isInvalid)console.info("============== REGENERATE TOKEN BY INVALID =============");
163
+ if(!isInvalid)console.info("============== REGENERATE TOKEN BY TIME =============");
164
+
165
+ var config = crmclient.getConfig_refresh(refresh_token)
166
+ new OAuth(config, 'refresh_access_token');
167
+ var url = OAuth.constructurl('generate_token');
168
+ OAuth.generateTokens(url).then(function (response) {
169
+
170
+ result_obj = crmclient.parseAndConstructObject(response);
171
+
172
+ persistenceModule.updateOAuthTokens(result_obj).then(function (response) {
173
+ resolve(result_obj);
174
+ });
175
+ })
176
+ }
177
+
178
+
179
+ else {
180
+ //console.info("============== TOKEN NO EXPIRADO =============")
181
+ resolve(result_obj);
182
+ }
183
+ })
184
+ })
185
+ }
186
+
187
+ function createParams(parameters) {
188
+
189
+ var params, key;
190
+ for (key in parameters) {
191
+ if (parameters.hasOwnProperty(key)) {
192
+ if (params) {
193
+ params = params + key + '=' + parameters[key] + '&';
194
+ }
195
+ else {
196
+ params = key + '=' + parameters[key] + '&';
197
+ }
198
+ }
199
+ }
200
+
201
+ return params;
202
+ }
203
+
204
+ function constructRequestDetails(input, url, type, isModuleParam) {
205
+
206
+ var requestDetails = {};
207
+
208
+ requestDetails.type = type;
209
+
210
+ if (input != undefined) {
211
+ if (input.id) {
212
+ url = url.replace("{id}", input.id);
213
+ }
214
+ else {
215
+ url = url.replace("/{id}", "");
216
+ }
217
+ if (input.api_name) {
218
+
219
+ url = url.replace("{api_name}", input.api_name);
220
+
221
+
222
+ var params = {};
223
+ if (input.params) {
224
+
225
+ params = input.params;
226
+ }
227
+ params.auth_type = "apikey";
228
+ input.params = params;
229
+ }
230
+ else {
231
+
232
+ url = url.replace("/{api_name}", "");
233
+
234
+ }
235
+ if (input.params) {
236
+ requestDetails.params = createParams(input.params) + (input.module && isModuleParam ? "module=" + input.module : "");//No I18N
237
+ }
238
+ if (!requestDetails.params && isModuleParam) {
239
+ requestDetails.params = "module=" + input.module;//No I18N
240
+ }
241
+ if (input.body && (type == HTTP_METHODS.POST || type == HTTP_METHODS.PUT)) {
242
+ requestDetails.body = JSON.stringify(input.body);
243
+ }
244
+ if (input.x_file_content) {
245
+ requestDetails.x_file_content = input.x_file_content;
246
+ }
247
+ if (input.download_file) {
248
+ requestDetails.download_file = input.download_file;
249
+ }
250
+ if (input.headers) {
251
+
252
+ requestDetails.headers = input.headers;
253
+ }
254
+ }
255
+
256
+ requestDetails.url = url;
257
+
258
+ return requestDetails;
259
+
260
+
261
+ }
262
+
263
+ module.exports = {
264
+
265
+ constructRequestDetails: constructRequestDetails,
266
+ promiseResponse: promiseResponse,
267
+ getAuthToken: getAuthToken
327
268
  }
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
- {
2
- "name": "zocrmsdkmiblu",
3
- "version": "0.2.4",
4
- "author": "IT Team",
5
- "license": "MIT",
6
- "dependencies": {
7
- "fs": "0.0.1-security",
8
- "mysql": "^2.18.1",
9
- "properties-reader": "0.0.16",
10
- "querystring": "^0.2.0",
11
- "request": "^2.88.2",
12
- "typescript": "^5.0.4"
13
- },
14
- "description": "Node SDK for Zoho CRM BY JB",
15
- "keywords": [
16
- "zoho crm",
17
- "sdk zoho"
18
- ],
19
- "main": "lib/js/ZCRMRestClient",
20
- "scripts": {
21
- "test": "mocha --timeout 5000 test/dev.test.js"
22
- },
23
- "devDependencies": {
24
- "@types/node": "^20.1.2",
25
- "@types/request": "^2.48.8",
26
- "mocha": "^10.2.0"
27
- }
28
- }
1
+ {
2
+ "name": "zocrmsdkmiblu",
3
+ "version": "0.2.6",
4
+ "author": "Julio Bodero",
5
+ "license": "MIT",
6
+ "dependencies": {
7
+ "fs": "0.0.1-security",
8
+ "mysql": "^2.18.1",
9
+ "properties-reader": "0.0.16",
10
+ "querystring": "^0.2.0",
11
+ "request": "^2.88.2",
12
+ "typescript": "^5.0.4"
13
+ },
14
+ "description": "Node SDK for Zoho CRM BY JB",
15
+ "keywords": [
16
+ "zoho crm",
17
+ "sdk zoho"
18
+ ],
19
+ "main": "lib/js/ZCRMRestClient",
20
+ "scripts": {
21
+ "test": "mocha --timeout 5000 test/dev.test.js"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^20.1.2",
25
+ "@types/request": "^2.48.8",
26
+ "mocha": "^10.2.0"
27
+ }
28
+ }