add option to bodyData() to not render into string
[squeep-api-dingus] / lib / dingus.js
index 51da6fab6b2185680cace1f8d1ad48921283d59d..3ca710e463db4fe614f469ea227b09bbc41e8325 100644 (file)
@@ -349,8 +349,9 @@ class Dingus {
    * Return all body data from a request.
    * @param {http.ClientRequest} req
    * @param {Number=} maximumBodySize
+   * @param {Boolean=} toString
    */
-  async bodyData(req, maximumBodySize) {
+  async bodyData(req, maximumBodySize, toString = true) {
     const _scope = _fileScope('bodyData');
     return new Promise((resolve, reject) => {
       const body = [];
@@ -363,7 +364,10 @@ class Dingus {
           reject(new ResponseError(Enum.ErrorResponse.RequestEntityTooLarge));
         }
       });
-      req.on('end', () => resolve(Buffer.concat(body).toString()));
+      req.on('end', () => {
+        const bodyBuffer = Buffer.concat(body);
+        resolve(toString ? bodyBuffer.toString() : bodyBuffer);
+      });
       req.on('error', (e) => {
         this.logger.error(_scope, 'failed', { error: e });
         reject(e);
@@ -521,7 +525,7 @@ class Dingus {
    */
   async serveFile(req, res, ctx, directory, fileName) {
     const _scope = _fileScope('serveFile');
-    this.logger.debug(_scope, 'called', { req: common.requestLogData(req), ctx });
+    this.logger.debug(_scope, 'called', { req, ctx });
 
     // Require a directory field.
     if (!directory) {
@@ -649,11 +653,11 @@ class Dingus {
     if (err && err.statusCode) {
       res.statusCode = err.statusCode;
       body = this.renderError(res.getHeader(Enum.Header.ContentType), err);
-      this.logger.debug(_scope, 'handler error', { err, ...common.handlerLogData(req, res, ctx) });
+      this.logger.debug(_scope, 'handler error', { err, req, res, ctx });
     } else {
       res.statusCode = 500;
       body = this.renderError(res.getHeader(Enum.Header.ContentType), Enum.ErrorResponse.InternalServerError);
-      this.logger.error(_scope, 'handler exception', { err, ...common.handlerLogData(req, res, ctx) });
+      this.logger.error(_scope, 'handler exception', { err, req, res, ctx });
     }
     res.end(body);
   }