UNPKG

2.36 kBJavaScriptView Raw
1var express = require('express')
2var bodyParser = require('body-parser')
3var corsMiddleware = require('cors')
4var cookieParser = require('cookie-parser')
5var multiparty = require('multiparty')
6var fs = require('fs-promise')
7var middleware = require('../../middleware')
8var basicAuth = require('basic-auth-connect')
9
10var app = express()
11app.use(bodyParser.json())
12app.use(bodyParser.text())
13app.use(bodyParser.urlencoded({extended: true}))
14app.use(cookieParser())
15
16var cors = corsMiddleware({credentials: true, origin: true})
17
18function 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
30app.all('/', cors, function (req, res) {
31 respond(req, res)
32})
33
34app.delete('/delete', function (req, res) {
35 res.status(204).send()
36})
37
38app.get('/text', function (req, res) {
39 res.set('Content-Type', 'text/plain')
40 res.send(req.query.text)
41})
42
43var secret = basicAuth(function (user, pass) {
44 return user === 'user' && pass === 'good'
45})
46
47app.get('/private', secret, function (req, res) {
48 res.send('private')
49})
50
51app.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
58app.use('/status/:status', function (req, res) {
59 res.status(req.params.status)
60 respond(req, res)
61})
62
63app.get('/redirect', function (req, res) {
64 res.redirect(req.query.url)
65})
66
67app.get('/jsonp', function (req, res) {
68 res.set('Content-Type', 'text/javascript')
69 res.send(req.query.callback + "({blah: 'blah'})")
70})
71
72app.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})
98module.exports = app