1 | var express = require('express')
|
2 | var bodyParser = require('body-parser')
|
3 | var corsMiddleware = require('cors')
|
4 | var cookieParser = require('cookie-parser')
|
5 | var multiparty = require('multiparty')
|
6 | var fs = require('fs-promise')
|
7 | var middleware = require('../../middleware')
|
8 | var basicAuth = require('basic-auth-connect')
|
9 |
|
10 | var app = express()
|
11 | app.use(bodyParser.json())
|
12 | app.use(bodyParser.text())
|
13 | app.use(bodyParser.urlencoded({extended: true}))
|
14 | app.use(cookieParser())
|
15 |
|
16 | var cors = corsMiddleware({credentials: true, origin: true})
|
17 |
|
18 | function respond (req, res) {
|
19 | res.json({
|
20 | url: req.url,
|
21 | body: req.body,
|
22 | method: req.method,
|
23 | headers: req.headers,
|
24 | query: req.query,
|
25 | cookies: req.cookies,
|
26 | xhr: req.xhr
|
27 | })
|
28 | }
|
29 |
|
30 | app.all('/', cors, function (req, res) {
|
31 | respond(req, res)
|
32 | })
|
33 |
|
34 | app.delete('/delete', function (req, res) {
|
35 | res.status(204).send()
|
36 | })
|
37 |
|
38 | app.get('/text', function (req, res) {
|
39 | res.set('Content-Type', 'text/plain')
|
40 | res.send(req.query.text)
|
41 | })
|
42 |
|
43 | var secret = basicAuth(function (user, pass) {
|
44 | return user === 'user' && pass === 'good'
|
45 | })
|
46 |
|
47 | app.get('/private', secret, function (req, res) {
|
48 | res.send('private')
|
49 | })
|
50 |
|
51 | app.get('/cookies', cors, function (req, res) {
|
52 | Object.keys(req.query).forEach(function (key) {
|
53 | res.cookie(key, req.query[key])
|
54 | })
|
55 | respond(req, res)
|
56 | })
|
57 |
|
58 | app.use('/status/:status', function (req, res) {
|
59 | res.status(req.params.status)
|
60 | respond(req, res)
|
61 | })
|
62 |
|
63 | app.get('/redirect', function (req, res) {
|
64 | res.redirect(req.query.url)
|
65 | })
|
66 |
|
67 | app.get('/jsonp', function (req, res) {
|
68 | res.set('Content-Type', 'text/javascript')
|
69 | res.send(req.query.callback + "({blah: 'blah'})")
|
70 | })
|
71 |
|
72 | app.post('/form', function (req, res) {
|
73 | var form = new multiparty.Form()
|
74 |
|
75 | form.parse(req, function (err, fields, files) {
|
76 | if (err) {
|
77 | console.log(err)
|
78 | res.status(500).send({message: err.message})
|
79 | }
|
80 | var response = {}
|
81 |
|
82 | Object.keys(fields).forEach(function (field) {
|
83 | response[field] = fields[field][0]
|
84 | })
|
85 | Promise.all(Object.keys(files).map(function (field) {
|
86 | var file = files[field][0]
|
87 | return middleware.streamToString(fs.createReadStream(file.path)).then(function (contents) {
|
88 | response[field] = {
|
89 | contents: contents,
|
90 | headers: file.headers
|
91 | }
|
92 | })
|
93 | })).then(function () {
|
94 | res.send(response)
|
95 | })
|
96 | })
|
97 | })
|
98 | module.exports = app
|