namirasoft-node 1.2.5 → 1.2.7

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.
@@ -36,25 +36,37 @@ class BaseController {
36
36
  this.meta.onStart();
37
37
  if (this.showLogAtTheBeginning)
38
38
  this.logger.info(JSON.stringify(this.meta));
39
- // init controller
40
- this.database = this.getDatabase();
41
- this.database.init();
42
- this.state = yield this.getState();
43
- this.props = yield this.getProps();
44
- // preHandle
45
- yield this.preHandle();
46
- // check for anomaly
47
- let anomaly = this.getAnomaly();
48
- if (anomaly != null)
49
- if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
50
- namirasoft_core_1.ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
51
- // check
52
- namirasoft_schema_1.JoiValidator.check(yield this.getBodySchema(), this.req.body);
53
- namirasoft_schema_1.JoiValidator.checkArray(yield this.getQueriesSchema(), this.req.query);
54
- // call controller
55
- this.output = yield this.handle();
56
- // postHandle
57
- yield this.postHandle();
39
+ let accpet = new namirasoft_core_1.ObjectService(this.req.headers.accept).getString();
40
+ let isJson = accpet == "application/json" || accpet == "" || !accpet;
41
+ let isSchema = accpet == "application/schema";
42
+ if (isJson) {
43
+ // init controller
44
+ this.database = this.getDatabase();
45
+ this.database.init();
46
+ this.state = yield this.getState();
47
+ this.props = yield this.getProps();
48
+ // preHandle
49
+ yield this.preHandle();
50
+ // check for anomaly
51
+ let anomaly = this.getAnomaly();
52
+ if (anomaly != null)
53
+ if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
54
+ namirasoft_core_1.ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
55
+ // check
56
+ namirasoft_schema_1.JoiValidator.check(yield this.getBodySchema(), this.req.body);
57
+ namirasoft_schema_1.JoiValidator.checkArray(yield this.getQueriesSchema(), this.req.query);
58
+ // call controller
59
+ this.output = yield this.handle();
60
+ // postHandle
61
+ yield this.postHandle();
62
+ }
63
+ else if (isSchema) {
64
+ // init controller
65
+ this.database = this.getDatabase();
66
+ this.result = yield this.getSchema();
67
+ }
68
+ else
69
+ namirasoft_core_1.ErrorOperation.throwHTTP(400, "Invalid accept: " + accpet);
58
70
  }
59
71
  catch (error) {
60
72
  let message;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../src/BaseController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../src/BaseController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,iCAA8B;AAC9B,qDAAuF;AAEvF,yDAAuG;AAEvG,MAAsB,cAAc;IAchC,YAAY,GAAuB,EAAE,GAAoB,EAAE,GAAqB;QAZtE,0BAAqB,GAAY,KAAK,CAAC;QACvC,oBAAe,GAAY,IAAI,CAAC;QAatC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IACS,UAAU;QAEhB,OAAO,IAAI,CAAC;IAChB,CAAC;IAeK,GAAG;;YAEL,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,SAAS;YACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IACA;gBACI,OAAO;gBACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,qBAAqB;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEhD,IAAI,MAAM,GAAW,IAAI,+BAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC5E,IAAI,MAAM,GAAG,MAAM,IAAI,kBAAkB,IAAI,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;gBACrE,IAAI,QAAQ,GAAG,MAAM,IAAI,oBAAoB,CAAC;gBAC9C,IAAI,MAAM,EACV;oBACI,kBAAkB;oBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAEnC,YAAY;oBACZ,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;oBAEvB,oBAAoB;oBACpB,IAAI,OAAO,GAA2B,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxD,IAAI,OAAO,IAAI,IAAI;wBACf,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BAC9C,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;oBAEvE,QAAQ;oBACR,gCAAY,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9D,gCAAY,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAEvE,kBAAkB;oBAClB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBAElC,aAAa;oBACb,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;iBAC3B;qBACI,IAAI,QAAQ,EACjB;oBACI,kBAAkB;oBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;iBACxC;;oBAEG,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAC;aAClE;YAAC,OAAO,KAAK,EACd;gBACI,IAAI,OAAe,CAAC;gBACpB,IAAI,KAAK,YAAY,KAAK,EAC1B;oBACI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACxB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;iBAC3B;;oBAEG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;gBAEzB,IAAI,KAAK,YAAY,2BAAS,EAC9B;oBACI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC/F;qBAED;oBACI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;oBACrB,IAAI,KAAK,YAAY,KAAK;wBACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;iBACtG;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC5B,IAAI,KAAK,YAAY,2BAAS;oBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;oBAEhC,IAAI,CAAC,MAAM,GAAG,8BAA8B,CAAC;aACpD;YACD,SAAS;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB;gBACI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;oBACnB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;;oBAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aACjC;YACD,SAAS;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;KAAA;IACK,SAAS;;YAEX,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,IAAI,oCAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7F,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,MAAM,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;CACJ;AAhJD,wCAgJC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "namirasoft-node",
3
3
  "description": "Namira Software Corporation Node NPM Package",
4
- "version": "1.2.5",
4
+ "version": "1.2.7",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {},
@@ -21,7 +21,7 @@
21
21
  "joi": "^17.11.0",
22
22
  "namirasoft-core": "^1.2.0",
23
23
  "namirasoft-log": "^1.2.0",
24
- "namirasoft-schema": "^1.2.2",
24
+ "namirasoft-schema": "^1.2.4",
25
25
  "nodemailer": "^6.9.7",
26
26
  "nodemailer-smtp-transport": "^2.7.4",
27
27
  "request-ip": "^3.3.0",
@@ -3,7 +3,7 @@ import { BaseDatabase } from './BaseDatabase';
3
3
  import { AnomalyDetector } from './AnomalyDetector';
4
4
  import { ILogger } from 'namirasoft-log';
5
5
  import { Meta } from './Meta';
6
- import { ErrorOperation, HTTPError, HTTPMethod } from 'namirasoft-core';
6
+ import { ErrorOperation, HTTPError, HTTPMethod, ObjectService } from 'namirasoft-core';
7
7
  import { BaseApplication } from './BaseApplication';
8
8
  import { BaseTypeSchema, BaseVariableSchema, ControllerSchema, JoiValidator } from 'namirasoft-schema';
9
9
 
@@ -58,30 +58,45 @@ export abstract class BaseController<D extends BaseDatabase, State, Props, Outpu
58
58
  this.meta.onStart();
59
59
  if (this.showLogAtTheBeginning)
60
60
  this.logger.info(JSON.stringify(this.meta));
61
- // init controller
62
- this.database = this.getDatabase();
63
- this.database.init();
64
- this.state = await this.getState();
65
- this.props = await this.getProps();
66
61
 
67
- // preHandle
68
- await this.preHandle();
62
+ let accpet: string = new ObjectService(this.req.headers.accept).getString();
63
+ let isJson = accpet == "application/json" || accpet == "" || !accpet;
64
+ let isSchema = accpet == "application/schema";
65
+ if (isJson)
66
+ {
67
+ // init controller
68
+ this.database = this.getDatabase();
69
+ this.database.init();
70
+ this.state = await this.getState();
71
+ this.props = await this.getProps();
72
+
73
+ // preHandle
74
+ await this.preHandle();
69
75
 
70
- // check for anomaly
71
- let anomaly: AnomalyDetector | null = this.getAnomaly();
72
- if (anomaly != null)
73
- if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
74
- ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
76
+ // check for anomaly
77
+ let anomaly: AnomalyDetector | null = this.getAnomaly();
78
+ if (anomaly != null)
79
+ if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
80
+ ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
75
81
 
76
- // check
77
- JoiValidator.check(await this.getBodySchema(), this.req.body);
78
- JoiValidator.checkArray(await this.getQueriesSchema(), this.req.query);
82
+ // check
83
+ JoiValidator.check(await this.getBodySchema(), this.req.body);
84
+ JoiValidator.checkArray(await this.getQueriesSchema(), this.req.query);
79
85
 
80
- // call controller
81
- this.output = await this.handle();
86
+ // call controller
87
+ this.output = await this.handle();
82
88
 
83
- // postHandle
84
- await this.postHandle();
89
+ // postHandle
90
+ await this.postHandle();
91
+ }
92
+ else if (isSchema)
93
+ {
94
+ // init controller
95
+ this.database = this.getDatabase();
96
+ this.result = await this.getSchema();
97
+ }
98
+ else
99
+ ErrorOperation.throwHTTP(400, "Invalid accept: " + accpet);
85
100
  } catch (error)
86
101
  {
87
102
  let message: string;