-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
114 lines (103 loc) · 3.65 KB
/
server.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
const fs = require('fs');
const Koa = require('koa');
const pathutil = require('path');
var Router = require('koa-router');
var bodyParser = require('koa-bodyparser');
const session = require('koa-session');
const compress =require('koa-compress');
const staticFiles = require('koa-static');
const cors = require('@koa/cors');
const mkdir = require('make-dir')
const dataService = require('./server/longbow-local-db')
const pageActions = require('./server/pageActions')
var app = new Koa();
var router = new Router();
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess', /** (string) cookie key (default is koa:sess) */
/** (number || 'session') maxAge in ms (default is 1 days) */
/** 'session' will result in a cookie that expires when session/browser is closed */
/** Warning: If a session cookie is stolen, this cookie will never expire */
maxAge: 86400000,
overwrite: true, /** (boolean) can overwrite or not (default true) */
httpOnly: true, /** (boolean) httpOnly or not (default true) */
signed: true, /** (boolean) signed or not (default true) */
rolling: false, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
};
app.use(session(CONFIG, app));
app.use(cors());
// app.use(async ctx => {
// ctx.body = 'Hello World';
// });
let dataRootPath = dataService.getDataPath();
router
.get('/', (ctx, next) => {
//console.log(ctx.session.views)
ctx.session.views=999
ctx.body = pageActions.loadPage();
})
.get('/action/projects', (ctx, next) => {
let query = ctx.query;
let reponsitoryName = query.reponsitoryName;
let projects = dataService.loadProjects(reponsitoryName);
ctx.body=projects;
})
.post('/action/create/project', (ctx, next) => {
let req = ctx.request;
let data = req.body;
let reponsitoryName = data.reponsitoryName;
let projectName = data.projectName;
let succ = dataService.createProject(reponsitoryName, projectName)
ctx.body=succ;
})
/**
* URL: http://localhost:3005/action/todos?reponsitoryName=team-todo&projectName=222
*
*/
.get('/action/todos', (ctx, next) => {
let query = ctx.query;
//console.log(query)
let reponsitoryName = query.reponsitoryName;
let projectName = query.projectName;
if(!projectName){
ctx.body = `projectName is null`
ctx.res.statusCode = 500;
return;
}
let todos = dataService.loadAllData(reponsitoryName, projectName);
//console.log(todos)
ctx.body = JSON.stringify(todos)
})
/**
* URL: http://localhost:3005/action/save/todos
* {
"reponsitoryName":"team-todo",
"projectName":"222",
"todos":[
{"id":111}
]
}
*
*/
.post('/action/save/todos', (ctx, next) => {
let req = ctx.request;
let data = req.body;
let todos = data.todos;
let reponsitoryName = data.reponsitoryName;
let projectName = data.projectName;
//console.log('save:',projectName)
if(!projectName) projectName = 'default';
//ctx.body = 'Hello save!'+data.length;
dataService.saveAllData(reponsitoryName, projectName, todos)
ctx.body = 'success'
})
app
.use(bodyParser())
.use(router.routes())
.use(compress({threshold:2048}))
.use(router.allowedMethods())
.use(staticFiles(pathutil.join(__dirname + '/website')));
let port = 3005;
app.listen(port);
console.log(`http://localhost:${port}/`)