Skip to content

Commit b2bd640

Browse files
author
mahsa shadi
committed
add unserialization of VFS URL query parameters into utils
1 parent 35ffdce commit b2bd640

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

src/utils/vfs.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,37 @@ const mountpointResolver = core => async (path) => {
176176
*/
177177
const parseGet = req => {
178178
const {query} = url.parse(req.url, true);
179-
180-
return Promise.resolve({fields: query, files: {}});
179+
const assembledQuery = assembleQueryData(query);
180+
181+
return Promise.resolve({fields: assembledQuery, files: {}});
181182
};
182183

184+
/*
185+
* Assembles a given object query
186+
*/
187+
const assembleQueryData = (object) => {
188+
const assembled = {}
189+
const keys = Object.keys(object)
190+
191+
for (let i = 0; i < keys.length; i++) {
192+
const key = keys[i]
193+
const dots = key.split('.')
194+
195+
let last = assembled
196+
for (let j = 0; j < dots.length; j++) {
197+
const dot = dots[j]
198+
if (j >= dots.length - 1) {
199+
last[dot] = object[key]
200+
} else {
201+
last[dot] = last[dot] || {}
202+
}
203+
204+
last = last[dot]
205+
}
206+
}
207+
return assembled;
208+
}
209+
183210
/*
184211
* Parses Json Body
185212
*/

src/vfs.js

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ const createMiddleware = core => {
111111
};
112112

113113
const createOptions = req => {
114-
const options = req.fields.options ? req.fields.options : decodeOptions(req.fields);
114+
const options = req.fields.options;
115115
const range = req.headers && req.headers.range;
116116
const session = {...req.session || {}};
117117
let result = options || {};
@@ -134,30 +134,6 @@ const createOptions = req => {
134134
};
135135
};
136136

137-
const decodeOptions = (reqFileds) => {
138-
let options = {};
139-
let keyPath = [];
140-
Object.keys(reqFileds).map((item) => {
141-
keyPath = item.split('.');
142-
assignObject(options, keyPath, reqFileds[item]);
143-
});
144-
console.log(options)
145-
return options;
146-
};
147-
148-
const assignObject = (obj, keyPath, value) => {
149-
let lastKeyIndex = keyPath.length - 1;
150-
let key;
151-
for (let i = 0; i < lastKeyIndex; i++) {
152-
key = keyPath[i];
153-
if (!(key in obj)) {
154-
obj[key] = {};
155-
}
156-
obj = obj[key];
157-
}
158-
obj[keyPath[lastKeyIndex]] = value;
159-
};
160-
161137
// Standard request with only a target
162138
const createRequestFactory = findMountpoint => (getter, method, readOnly, respond) => async (req, res) => {
163139
const options = createOptions(req);
@@ -321,4 +297,4 @@ module.exports = core => {
321297
});
322298

323299
return {router, methods};
324-
};
300+
};

0 commit comments

Comments
 (0)