|
| 1 | +'use strict' |
| 2 | + |
| 3 | +const path = require('path') |
| 4 | +const express = require('express') |
| 5 | +const firebase = require('firebase') |
| 6 | +const hackernews = require('../../') |
| 7 | + |
| 8 | +const server = express() |
| 9 | +const hnservice = hackernews.init(firebase, { |
| 10 | +log: console.log |
| 11 | +}) |
| 12 | +const watchmode = process.argv.includes('--watch') |
| 13 | +const index = ` |
| 14 | +<ul> |
| 15 | +<li><a href="/hackernews/top">top</a></li> |
| 16 | +<li><a href="/hackernews/top/1>top at page 1</a></li> |
| 17 | +<li><a href="/hackernews/new">new</a></li> |
| 18 | +<li><a href="/hackernews/best">best</a></li> |
| 19 | +<li><a href="/hackernews/ask">ask</a></li> |
| 20 | +<li><a href="/hackernews/show">show</a></li> |
| 21 | +<li><a href="/hackernews/job">job</a></li> |
| 22 | +<li><a href="/hackernews/kids/14545382">kids/14545382</a></li> |
| 23 | +<li><a href="/hackernews/length/top">length/top</a></li> |
| 24 | +<li><a href="/hackernews/user/jl">users/jl</a></li> |
| 25 | +</ui>` |
| 26 | + |
| 27 | +server.get('/', (req, res) => { |
| 28 | +res.send(index) |
| 29 | +}) |
| 30 | + |
| 31 | +server.get('/hackernews/*', (req, res) => { |
| 32 | +hnservice.fetch(req.path) |
| 33 | +.then(data => { |
| 34 | +res.send(typeof data === "number" ? String(data) : data) |
| 35 | +}) |
| 36 | +.catch(err => { |
| 37 | +console.error(err) |
| 38 | +res.status(500).send(err.toString()) |
| 39 | +}) |
| 40 | +}) |
| 41 | + |
| 42 | +Promise.resolve(watchmode && hnservice.watch()).then(() => { |
| 43 | +const PORT = 3001 |
| 44 | +server.listen(PORT, () => { |
| 45 | +console.log(`server has started with ${watchmode ? 'watch' : 'fetch'} mode.` + |
| 46 | +` visit to http://localhost:${PORT}`) |
| 47 | +}) |
| 48 | +}) |
0 commit comments