xzwebx-httpfilter 1.3.0 → 2.0.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 (2) hide show
  1. package/HttpFilter.js +197 -61
  2. package/package.json +1 -1
package/HttpFilter.js CHANGED
@@ -9,10 +9,10 @@ let ModuleInterfaceMap = {}
9
9
  let FieldMap = {}
10
10
  async function response(req, res, next) {
11
11
  let retData = {
12
- codeKey: 'SYSTEM_ERR',
12
+ codeKey: 'SVC_ERR',
13
13
  data: []
14
14
  }
15
- retData.codeKey = 'SUCCESS'
15
+ retData.codeKey = 'SUCC'
16
16
  return res.send(res.Msg(retData))
17
17
  }
18
18
  function Init(language, resultCodeMap, tipsMap, moduleMap, moduleInterfaceMap, fieldMap) {
@@ -101,13 +101,13 @@ function CheckReq(req, res, next) {
101
101
 
102
102
  const module = ModuleMap[baseUrl]
103
103
  if (!module) {
104
- return res.send(res.Msg({codeKey: 'SYSTEM_TIPS', msg: ['ERR_URL']}))
104
+ return res.send(res.Msg({codeKey: 'CLT_ERR', msg: ['WEBX_ERR_URL']}))
105
105
  }
106
106
 
107
107
  if (!ModuleInterfaceMap[module.id] ||
108
108
  !ModuleInterfaceMap[module.id][subUri] ||
109
109
  !ModuleInterfaceMap[module.id][subUri][req.method.toLowerCase()]) {
110
- return res.send(res.Msg({codeKey: 'SYSTEM_TIPS', msg: ['ERR_URL']}))
110
+ return res.send(res.Msg({codeKey: 'CLT_ERR', msg: ['WEBX_ERR_URL']}))
111
111
  }
112
112
 
113
113
  req.headers['interfaceInfo'] = ModuleInterfaceMap[module.id][subUri][req.method.toLowerCase()]
@@ -118,7 +118,7 @@ function CheckReq(req, res, next) {
118
118
 
119
119
  let retMsgData = cycleCheckParams(FieldMap[reqMsgId], req.body)
120
120
  if (retMsgData) {
121
- return res.send(res.Msg({codeKey: 'SYSTEM_TIPS', msg: retMsgData}))
121
+ return res.send(res.Msg({codeKey: 'CLT_ERR', msg: retMsgData}))
122
122
  }
123
123
 
124
124
  return next()
@@ -161,10 +161,14 @@ function cycleCheckParams(msgFieldMap, data) {
161
161
  }
162
162
  let fatherFieldType = fCfgItem.fieldType
163
163
  if (fatherFieldType == 'LIST' || (fatherFieldType == 'OBJ' && fCfgItem.keyType == 'VOBJ')) {
164
- for (let idx in data) {
165
- retMsgData = cycleCheckParams(msgFieldMap[fieldName], data[idx])
166
- if (retMsgData) {
167
- return retMsgData
164
+ if (isRoot) {
165
+ retMsgData = cycleCheckParams(msgFieldMap[fieldName], data)
166
+ } else {
167
+ for (let idx in data) {
168
+ retMsgData = cycleCheckParams(msgFieldMap[fieldName], data[idx])
169
+ if (retMsgData) {
170
+ return retMsgData
171
+ }
168
172
  }
169
173
  }
170
174
  } else {
@@ -187,20 +191,25 @@ function IsStringOk(fCfgItem, paramValue) {
187
191
  }
188
192
 
189
193
  if (fCfgItem.ifMust == 'NO' && (
190
- data == undefined ||
191
- data == null ||
192
- data == '' ||
193
- (typeof data === 'object' && !data.length && !Object.keys(data).length))
194
+ paramValue == undefined ||
195
+ paramValue == null ||
196
+ paramValue == '' ||
197
+ (typeof paramValue === 'object' && !paramValue.length && !Object.keys(paramValue).length))
194
198
  ) {
195
199
  return null
196
200
  }
197
201
 
198
- if (!paramValue) {
199
- return ['NULL_STR_FIELD', fCfgItem.fieldUrl]
200
- }
201
-
202
- if (typeof paramValue != 'string') {
203
- return ['NOT_STR_VALUE', fCfgItem.fieldUrl]
202
+ if (!paramValue || typeof paramValue != 'string') {
203
+ if (fCfgItem.nullTips) {
204
+ if (fCfgItem.nullTips.substring(0, 2) === '${' && fCfgItem.nullTips.substring(fCfgItem.nullTips.length -1, fCfgItem.nullTips.length) === '}') {
205
+ let nullTipsKey = fCfgItem.nullTips.substring(2, fCfgItem.nullTips.length -1)
206
+ if (TipsMap[nullTipsKey]) {
207
+ return TipsMap[nullTipsKey].tips
208
+ }
209
+ }
210
+ return fCfgItem.nullTips
211
+ }
212
+ return ['WEBX_NULL_FIELD', 'string', fCfgItem.fieldUrl]
204
213
  }
205
214
 
206
215
  for (let idx in fCfgItem.rules) {
@@ -222,9 +231,15 @@ function IsStringOk(fCfgItem, paramValue) {
222
231
 
223
232
  if (!isPass) {
224
233
  if (rule.ruleDesc) {
234
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
235
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
236
+ if (TipsMap[ruleTipsKey]) {
237
+ return TipsMap[ruleTipsKey].tips
238
+ }
239
+ }
225
240
  return rule.ruleDesc
226
241
  }
227
- return ['WRONG_STR_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
242
+ return ['WEBX_WRONG_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
228
243
  }
229
244
  } else if (rule.checkType == 'ENU') {
230
245
  if (rule.isCaseSensitive == 1) {
@@ -232,16 +247,28 @@ function IsStringOk(fCfgItem, paramValue) {
232
247
  if (rule.isMatched === 1) {
233
248
  if (!rule.exprVal.includes(paramValue)) {
234
249
  if (rule.ruleDesc) {
250
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
251
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
252
+ if (TipsMap[ruleTipsKey]) {
253
+ return TipsMap[ruleTipsKey].tips
254
+ }
255
+ }
235
256
  return rule.ruleDesc
236
257
  }
237
- return ['WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
258
+ return ['WEBX_WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
238
259
  }
239
260
  } else {
240
261
  if (rule.exprVal.includes(paramValue)) {
241
262
  if (rule.ruleDesc) {
263
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
264
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
265
+ if (TipsMap[ruleTipsKey]) {
266
+ return TipsMap[ruleTipsKey].tips
267
+ }
268
+ }
242
269
  return rule.ruleDesc
243
270
  }
244
- return ['EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
271
+ return ['WEBX_EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
245
272
  }
246
273
  }
247
274
  }
@@ -263,12 +290,18 @@ function IsStringOk(fCfgItem, paramValue) {
263
290
  }
264
291
  if (!isPass) {
265
292
  if (rule.ruleDesc) {
293
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
294
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
295
+ if (TipsMap[ruleTipsKey]) {
296
+ return TipsMap[ruleTipsKey].tips
297
+ }
298
+ }
266
299
  return rule.ruleDesc
267
300
  }
268
301
  if (rule.isMatched === 1) {
269
- return ['WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
302
+ return ['WEBX_WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
270
303
  } else {
271
- return ['EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
304
+ return ['WEBX_EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
272
305
  }
273
306
  }
274
307
  }
@@ -292,9 +325,15 @@ function IsStringOk(fCfgItem, paramValue) {
292
325
  }
293
326
  if (!isPass) {
294
327
  if (rule.ruleDesc) {
328
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
329
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
330
+ if (TipsMap[ruleTipsKey]) {
331
+ return TipsMap[ruleTipsKey].tips
332
+ }
333
+ }
295
334
  return rule.ruleDesc
296
335
  }
297
- return ['WRONG_REGEX_VALUE', fCfgItem.fieldUrl, exprVal]
336
+ return ['WEBX_WRONG_REGEX_VALUE', fCfgItem.fieldUrl, exprVal]
298
337
  }
299
338
  }
300
339
  }
@@ -307,20 +346,25 @@ function IsIntOk(fCfgItem, paramValue) {
307
346
  }
308
347
 
309
348
  if (fCfgItem.ifMust == 'NO' && (
310
- data == undefined ||
311
- data == null ||
312
- data == '' ||
313
- (typeof data === 'object' && !data.length && !Object.keys(data).length))
349
+ paramValue == undefined ||
350
+ paramValue == null ||
351
+ paramValue == '' ||
352
+ (typeof paramValue === 'object' && !paramValue.length && !Object.keys(paramValue).length))
314
353
  ) {
315
354
  return null
316
355
  }
317
356
 
318
- if (paramValue == undefined) {
319
- return ['NULL_INT_FIELD', fCfgItem.fieldUrl]
320
- }
321
-
322
- if (typeof paramValue != 'number') {
323
- return ['NOT_INT_VALUE', fCfgItem.fieldUrl]
357
+ if (paramValue == undefined || typeof paramValue != 'number') {
358
+ if (fCfgItem.nullTips) {
359
+ if (fCfgItem.nullTips.substring(0, 2) === '${' && fCfgItem.nullTips.substring(fCfgItem.nullTips.length -1, fCfgItem.nullTips.length) === '}') {
360
+ let nullTipsKey = fCfgItem.nullTips.substring(2, fCfgItem.nullTips.length -1)
361
+ if (TipsMap[nullTipsKey]) {
362
+ return TipsMap[nullTipsKey].tips
363
+ }
364
+ }
365
+ return fCfgItem.nullTips
366
+ }
367
+ return ['WEBX_NULL_FIELD', 'number', fCfgItem.fieldUrl]
324
368
  }
325
369
 
326
370
  for (let idx in fCfgItem.rules) {
@@ -342,25 +386,43 @@ function IsIntOk(fCfgItem, paramValue) {
342
386
 
343
387
  if (!isPass) {
344
388
  if (rule.ruleDesc) {
389
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
390
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
391
+ if (TipsMap[ruleTipsKey]) {
392
+ return TipsMap[ruleTipsKey].tips
393
+ }
394
+ }
345
395
  return rule.ruleDesc
346
396
  }
347
- return ['WRONG_INT_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
397
+ return ['WEBX_WRONG_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
348
398
  }
349
399
  } else if (rule.checkType == 'ENU') {
350
400
  if (rule.exprVal && rule.exprVal.length) {
351
401
  if (rule.isMatched === 1) {
352
402
  if (!rule.exprVal.includes(paramValue)) {
353
403
  if (rule.ruleDesc) {
404
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
405
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
406
+ if (TipsMap[ruleTipsKey]) {
407
+ return TipsMap[ruleTipsKey].tips
408
+ }
409
+ }
354
410
  return rule.ruleDesc
355
411
  }
356
- return ['WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
412
+ return ['WEBX_WRONG_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
357
413
  }
358
414
  } else {
359
415
  if (rule.exprVal.includes(paramValue)) {
360
416
  if (rule.ruleDesc) {
417
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
418
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
419
+ if (TipsMap[ruleTipsKey]) {
420
+ return TipsMap[ruleTipsKey].tips
421
+ }
422
+ }
361
423
  return rule.ruleDesc
362
424
  }
363
- return ['EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
425
+ return ['WEBX_EXCLUSION_ENU_VALUE', fCfgItem.fieldUrl, rule.exprVal]
364
426
  }
365
427
  }
366
428
  }
@@ -384,9 +446,15 @@ function IsIntOk(fCfgItem, paramValue) {
384
446
  }
385
447
  if (!isPass) {
386
448
  if (rule.ruleDesc) {
449
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
450
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
451
+ if (TipsMap[ruleTipsKey]) {
452
+ return TipsMap[ruleTipsKey].tips
453
+ }
454
+ }
387
455
  return rule.ruleDesc
388
456
  }
389
- return ['WRONG_REGEX_VALUE', fCfgItem.fieldUrl, exprVal]
457
+ return ['WEBX_WRONG_REGEX_VALUE', fCfgItem.fieldUrl, exprVal]
390
458
  }
391
459
  }
392
460
  }
@@ -399,24 +467,58 @@ function IsObjOk(fCfgItem, paramValue) {
399
467
  }
400
468
 
401
469
  if (fCfgItem.ifMust == 'NO' && (
402
- data == undefined ||
403
- data == null ||
404
- data == '' ||
405
- (typeof data === 'object' && !data.length && !Object.keys(data).length))
470
+ paramValue == undefined ||
471
+ paramValue == null ||
472
+ paramValue == '' ||
473
+ (typeof paramValue === 'object' && !paramValue.length && !Object.keys(paramValue).length))
406
474
  ) {
407
475
  return null
408
476
  }
409
477
 
410
- if (!paramValue) {
411
- return ['NULL_FIELD', fCfgItem.fieldUrl]
478
+ if (!paramValue || paramValue.constructor != Object || !Object.keys(paramValue).length) {
479
+ if (fCfgItem.nullTips) {
480
+ if (fCfgItem.nullTips.substring(0, 2) === '${' && fCfgItem.nullTips.substring(fCfgItem.nullTips.length -1, fCfgItem.nullTips.length) === '}') {
481
+ let nullTipsKey = fCfgItem.nullTips.substring(2, fCfgItem.nullTips.length -1)
482
+ if (TipsMap[nullTipsKey]) {
483
+ return TipsMap[nullTipsKey].tips
484
+ }
485
+ }
486
+ return fCfgItem.nullTips
487
+ }
488
+ return ['WEBX_NULL_FIELD', 'map', fCfgItem.fieldUrl]
412
489
  }
413
490
 
414
- if (paramValue.constructor != Object) {
415
- return ['WRONG_OBJ_VALUE', fCfgItem.fieldUrl]
416
- }
491
+ let length = Object.keys(paramValue).length
492
+ for (let idx in fCfgItem.rules) {
493
+ let rule = fCfgItem.rules[idx]
494
+ if (rule.checkType == 'RANGE') {
495
+ let isPass = false
496
+ if (typeof rule.exprVal[0] == 'object') {
497
+ for (let i in rule.exprVal) {
498
+ if (length >= parseInt(rule.exprVal[i][0]) && length <= parseInt(rule.exprVal[i][1])) {
499
+ isPass = true
500
+ break
501
+ }
502
+ }
503
+ } else {
504
+ if (length >= parseInt(rule.exprVal[0]) && length <= parseInt(rule.exprVal[1])) {
505
+ isPass = true
506
+ }
507
+ }
417
508
 
418
- if (!Object.keys(paramValue).length) {
419
- return ['NULL_VALUE', fCfgItem.fieldUrl]
509
+ if (!isPass) {
510
+ if (rule.ruleDesc) {
511
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
512
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
513
+ if (TipsMap[ruleTipsKey]) {
514
+ return TipsMap[ruleTipsKey].tips
515
+ }
516
+ }
517
+ return rule.ruleDesc
518
+ }
519
+ return ['WEBX_WRONG_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
520
+ }
521
+ }
420
522
  }
421
523
 
422
524
  return null
@@ -427,24 +529,58 @@ function IsListOk(fCfgItem, paramValue) {
427
529
  }
428
530
 
429
531
  if (fCfgItem.ifMust == 'NO' && (
430
- data == undefined ||
431
- data == null ||
432
- data == '' ||
433
- (typeof data === 'object' && !data.length && !Object.keys(data).length))
532
+ paramValue == undefined ||
533
+ paramValue == null ||
534
+ paramValue == '' ||
535
+ (typeof paramValue === 'object' && !paramValue.length && !Object.keys(paramValue).length))
434
536
  ) {
435
537
  return null
436
538
  }
437
539
 
438
- if (!paramValue) {
439
- return ['NULL_FIELD', fCfgItem.fieldUrl]
540
+ if (!paramValue || paramValue.constructor != Array || !paramValue.length) {
541
+ if (fCfgItem.nullTips) {
542
+ if (fCfgItem.nullTips.substring(0, 2) === '${' && fCfgItem.nullTips.substring(fCfgItem.nullTips.length -1, fCfgItem.nullTips.length) === '}') {
543
+ let nullTipsKey = fCfgItem.nullTips.substring(2, fCfgItem.nullTips.length -1)
544
+ if (TipsMap[nullTipsKey]) {
545
+ return TipsMap[nullTipsKey].tips
546
+ }
547
+ }
548
+ return fCfgItem.nullTips
549
+ }
550
+ return ['WEBX_NULL_FIELD', 'list', fCfgItem.fieldUrl]
440
551
  }
441
552
 
442
- if (paramValue.constructor != Array) {
443
- return ['WRONG_LIST_VALUE', fCfgItem.fieldUrl]
444
- }
553
+ let length = paramValue.length
554
+ for (let idx in fCfgItem.rules) {
555
+ let rule = fCfgItem.rules[idx]
556
+ if (rule.checkType == 'RANGE') {
557
+ let isPass = false
558
+ if (typeof rule.exprVal[0] == 'object') {
559
+ for (let i in rule.exprVal) {
560
+ if (length >= parseInt(rule.exprVal[i][0]) && length <= parseInt(rule.exprVal[i][1])) {
561
+ isPass = true
562
+ break
563
+ }
564
+ }
565
+ } else {
566
+ if (length >= parseInt(rule.exprVal[0]) && length <= parseInt(rule.exprVal[1])) {
567
+ isPass = true
568
+ }
569
+ }
445
570
 
446
- if (!paramValue.length) {
447
- return ['NULL_VALUE', fCfgItem.fieldUrl]
571
+ if (!isPass) {
572
+ if (rule.ruleDesc) {
573
+ if (rule.ruleDesc.substring(0, 2) === '${' && rule.ruleDesc.substring(rule.ruleDesc.length -1, rule.ruleDesc.length) === '}') {
574
+ let ruleTipsKey = rule.ruleDesc.substring(2, rule.ruleDesc.length -1)
575
+ if (TipsMap[ruleTipsKey]) {
576
+ return TipsMap[ruleTipsKey].tips
577
+ }
578
+ }
579
+ return rule.ruleDesc
580
+ }
581
+ return ['WEBX_WRONG_RANGE', fCfgItem.fieldUrl, JSON.stringify(rule.exprVal)]
582
+ }
583
+ }
448
584
  }
449
585
 
450
586
  return null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xzwebx-httpfilter",
3
- "version": "1.3.0",
3
+ "version": "2.0.0",
4
4
  "main": "HttpFilter.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"