-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathget-request-body.js
54 lines (50 loc) · 1.32 KB
/
get-request-body.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"use strict";
const merge = require("merge");
const Sealious = require("sealious");
const squares = {
set: function(obj, key, value){
const keys = key.split(/[\]\[]{1,2}/g);
if(keys.length > 1){
keys.splice(-1); //to remove the trailing empty string;
}
const last_key = keys[keys.length-1];
let current = obj;
for(let i=0; i<keys.length-1; i++){
const key = keys[i];
const next_key = keys[i+1];
if(current[key] === undefined){
if(next_key === ""){
current[key] = [];
}else{
current[key] = {};
}
}
current = current[key];
}
if(last_key === ""){
current.push(value);
}else{
current[last_key] = value;
}
}
};
function get_request_body(context, request){
const parsed_query = {};
for(const i in request.query){
squares.set(parsed_query, i, request.query[i]);
}
for(const i in request.payload){
squares.set(parsed_query, i, request.payload[i]);
}
for(var i in request.payload){
if(request.payload[i].payload && request.payload[i].payload instanceof Buffer){
let filename = request.payload[i].filename;
var mime_type = request.payload[i].headers["content-type"];
var data = request.payload[i].payload;
parsed_query[i] = new Sealious.File(context, filename, data, null, mime_type);
}
}
return parsed_query;
};
const a = {};
module.exports = get_request_body;