added mock collection REST data

This commit is contained in:
Art Lowel
2016-12-13 15:15:23 +01:00
parent 6c51618a2a
commit 213ca4ae53
3 changed files with 76 additions and 59 deletions

View File

@@ -1,12 +1,12 @@
var util = require('util');
var { Router } = require('express');
const util = require('util');
const { Router } = require('express');
// Our API for demos only
import { fakeDataBase } from './db';
import { fakeDemoRedisCache } from './cache';
// you would use cookies/token etc
var USER_ID = 'f9d98cf1-1b96-464e-8755-bcc2a5c09077'; // hardcoded as an example
const USER_ID = 'f9d98cf1-1b96-464e-8755-bcc2a5c09077'; // hardcoded as an example
// Our API for demos only
export function serverApi(req, res) {
@@ -27,80 +27,97 @@ export function serverApi(req, res) {
}
// todo API
// collection API
var COUNT = 4;
var TODOS = [
{ id: 0, value: 'finish example', created_at: new Date(), completed: false },
{ id: 1, value: 'add tests', created_at: new Date(), completed: false },
{ id: 2, value: 'include development environment', created_at: new Date(), completed: false },
{ id: 3, value: 'include production environment', created_at: new Date(), completed: false }
let COUNT = 2;
const COLLECTIONS = [
{
"id": "9e32a2e2-6b91-4236-a361-995ccdc14c60",
"name": "Test Collection 1",
"handle": "123456789/5179",
"type": "collection",
"copyrightText": "<p>© 2005-2016 JOHN DOE SOME RIGHTS RESERVED</p>",
"introductoryText": "<p class='lead'>An introductory text dolor sit amet, consectetur adipiscing elit. Duis laoreet lorem erat, eget auctor est ultrices quis. Nullam ac tincidunt quam. In nec nisl odio. In egestas aliquam tincidunt.</p>\r\n<p>Integer vitae diam id dolor pharetra dignissim in sed enim. Vivamus pulvinar tristique sem a iaculis. Aenean ultricies dui vel facilisis laoreet. Integer porta erat eu ultrices rhoncus. Sed condimentum malesuada ex sit amet ullamcorper. Morbi a ipsum dolor. Vivamus interdum eget lacus ut fermentum.</p>",
"shortDescription": "A collection for testing purposes",
"sidebarText": "<p>Some news sed condimentum malesuada ex sit amet ullamcorper. Morbi a ipsum dolor. Vivamus interdum eget lacus ut fermentum. Donec sed ultricies erat, nec sollicitudin mauris. Duis varius nulla quis quam vulputate, at hendrerit turpis rutrum. Integer nec facilisis sapien. Fusce fringilla malesuada lectus id pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae</p>",
},
{
"id": "598ce822-c357-46f3-ab70-63724d02d6ad",
"name": "Test Collection 2",
"handle": "123456789/6547",
"type": "collection",
"copyrightText": "<p>© 2005-2016 JOHN DOE SOME RIGHTS RESERVED</p>",
"introductoryText": "<p class='lead'>Another introductory text dolor sit amet, consectetur adipiscing elit. Duis laoreet lorem erat, eget auctor est ultrices quis. Nullam ac tincidunt quam. In nec nisl odio. In egestas aliquam tincidunt.</p>\r\n<p>Integer vitae diam id dolor pharetra dignissim in sed enim. Vivamus pulvinar tristique sem a iaculis. Aenean ultricies dui vel facilisis laoreet. Integer porta erat eu ultrices rhoncus. Sed condimentum malesuada ex sit amet ullamcorper. Morbi a ipsum dolor. Vivamus interdum eget lacus ut fermentum.</p>",
"shortDescription": "Another collection for testing purposes",
"sidebarText": "<p>Some more news sed condimentum malesuada ex sit amet ullamcorper. Morbi a ipsum dolor. Vivamus interdum eget lacus ut fermentum. Donec sed ultricies erat, nec sollicitudin mauris. Duis varius nulla quis quam vulputate, at hendrerit turpis rutrum. Integer nec facilisis sapien. Fusce fringilla malesuada lectus id pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae</p>",
}
];
export function createTodoApi() {
export function createMockApi() {
var router = Router()
let router = Router();
router.route('/todos')
router.route('/collections')
.get(function(req, res) {
console.log('GET');
// 70ms latency
setTimeout(function() {
res.json(TODOS);
res.json(COLLECTIONS);
}, 0);
})
.post(function(req, res) {
console.log('POST', util.inspect(req.body, { colors: true }));
var todo = req.body;
if (todo) {
TODOS.push({
value: todo.value,
created_at: new Date(),
completed: todo.completed,
id: COUNT++
});
return res.json(todo);
}
return res.end();
// })
// .post(function(req, res) {
// console.log('POST', util.inspect(req.body, { colors: true }));
// let collection = req.body;
// if (collection) {
// COLLECTIONS.push({
// value: collection.value,
// created_at: new Date(),
// completed: collection.completed,
// id: COUNT++
// });
// return res.json(collection);
// }
//
// return res.end();
});
router.param('todo_id', function(req, res, next, todo_id) {
router.param('collection_id', function(req, res, next, collection_id) {
// ensure correct prop type
var id = Number(req.params.todo_id);
let id = req.params.collection_id;
try {
var todo = TODOS[id];
req.todo_id = id;
req.todo = TODOS[id];
req.collection_id = id;
req.collection = COLLECTIONS.find((collection) => {
return collection.id = id;
});
next();
} catch (e) {
next(new Error('failed to load todo'));
next(new Error('failed to load collection'));
}
});
router.route('/todos/:todo_id')
router.route('/collections/:collection_id')
.get(function(req, res) {
console.log('GET', util.inspect(req.todo, { colors: true }));
console.log('GET', util.inspect(req.collection, { colors: true }));
res.json(req.todo);
})
.put(function(req, res) {
console.log('PUT', util.inspect(req.body, { colors: true }));
var index = TODOS.indexOf(req.todo);
var todo = TODOS[index] = req.body;
res.json(todo);
})
.delete(function(req, res) {
console.log('DELETE', req.todo_id);
var index = TODOS.indexOf(req.todo);
TODOS.splice(index, 1);
res.json(req.todo);
res.json(req.collection);
// })
// .put(function(req, res) {
// console.log('PUT', util.inspect(req.body, { colors: true }));
//
// let index = COLLECTIONS.indexOf(req.collection);
// let collection = COLLECTIONS[index] = req.body;
//
// res.json(collection);
// })
// .delete(function(req, res) {
// console.log('DELETE', req.collection_id);
//
// let index = COLLECTIONS.indexOf(req.collection);
// COLLECTIONS.splice(index, 1);
//
// res.json(req.collection);
});
return router;
};
}