Support saving posts via Store

This commit is contained in:
Robin Ward
2015-04-09 14:54:17 -04:00
parent d4a05825da
commit 76f7786d0d
16 changed files with 205 additions and 160 deletions

View File

@ -2,15 +2,21 @@ function parsePostData(query) {
const result = {};
query.split("&").forEach(function(part) {
const item = part.split("=");
result[item[0]] = decodeURIComponent(item[1]).replace(/\+/g, ' ');
const firstSeg = decodeURIComponent(item[0]);
const m = /^([^\[]+)\[([^\]]+)\]/.exec(firstSeg);
const val = decodeURIComponent(item[1]).replace(/\+/g, ' ');
if (m) {
result[m[1]] = result[m[1]] || {};
result[m[1]][m[2]] = val;
} else {
result[firstSeg] = val;
}
});
return result;
}
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
function response(code, obj) {
if (typeof code === "object") {
obj = code;
@ -122,7 +128,10 @@ export default function() {
this.put('/posts/:post_id/recover', success);
this.put('/posts/:post_id', (request) => {
return response({ post: {id: request.params.post_id, version: 2 } });
const data = parsePostData(request.requestBody);
data.post.id = request.params.post_id;
data.post.version = 2;
return response(200, data.post);
});
this.put('/t/:slug/:id', (request) => {
@ -157,9 +166,15 @@ export default function() {
}
});
this.post('/widgets', function(request) {
const widget = parsePostData(request.requestBody).widget;
widget.id = 100;
return response(200, {widget});
});
this.put('/widgets/:widget_id', function(request) {
const w = _widgets.findBy('id', parseInt(request.params.widget_id));
return response({ widget: clone(w) });
const widget = parsePostData(request.requestBody).widget;
return response({ widget });
});
this.get('/widgets', function(request) {