Created
November 23, 2019 13:43
-
-
Save zbicin/28f78d289b81472198a89796e789e9e0 to your computer and use it in GitHub Desktop.
server.js 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const express = require('express'); | |
| const bodyParser = require('body-parser'); | |
| const cors = require('cors'); | |
| const readline = require('readline'); | |
| const childProcess = require('child_process'); | |
| const https = require('https'); | |
| const app = express(); | |
| if (process.argv.includes('--prompt')) { | |
| const rl = readline.createInterface(process.stdin, process.stdout); | |
| rl.question('Please specify port: ', (answer) => { | |
| if (isNaN(answer)) { | |
| console.warn(`Invalid port specified, using default instead.`); | |
| runServer(3000); | |
| } else { | |
| runServer(answer); | |
| } | |
| }); | |
| } else { | |
| runServer(3000); | |
| } | |
| app.use(cors()); | |
| const jsonParser = bodyParser.json(); | |
| const users = []; | |
| const messages = [ | |
| { body: 'test message', sentBy: 'test user' } | |
| ]; | |
| app.post('/login', jsonParser, (req, res) => { | |
| const user = { | |
| login: req.body.login | |
| } | |
| users.push(user); | |
| console.log(`User ${user.login} joined`); | |
| return res.json(user); | |
| }) | |
| app.post('/sendMessage', jsonParser, (req, res) => { | |
| const message = { | |
| body: req.body.message, | |
| sentBy: req.body.login | |
| } | |
| messages.push(message); | |
| if (message.body === '/joke') { | |
| getJoke((err, joke) => { | |
| if (err) { | |
| console.error('Failed to fetch joke'); | |
| res.json({ sentBy: 'Joke Bot', body: 'Failed :(' }); | |
| } else { | |
| const jokeMessage = { | |
| body: joke, | |
| sentBy: 'Joke Bot' | |
| }; | |
| messages.push(jokeMessage); | |
| res.json(jokeMessage); | |
| } | |
| }) | |
| } else { | |
| return res.json(message); | |
| } | |
| }) | |
| app.get('/messages', (req, res) => { | |
| return res.json(messages); | |
| }) | |
| app.get('/', (req, res) => res.send("stary tekst")); | |
| app.get('/whoami', (req, res) => { | |
| childProcess.exec('whoami', (err, response) => { | |
| if (err) { | |
| console.error(`whoami failed`); | |
| res.send(err.message); | |
| } else { | |
| res.send(response.trim()); | |
| } | |
| }); | |
| }); | |
| function getJoke(callback) { | |
| https.get({ | |
| hostname: 'icanhazdadjoke.com', | |
| headers: { Accept: 'text/plain' } | |
| }, (res) => { | |
| if (res.statusCode !== 200) { | |
| callback('no joke, sorry'); | |
| } else { | |
| let joke = ''; | |
| res.on('data', (chunk) => { | |
| joke += chunk; | |
| }); | |
| res.on('end', () => { | |
| callback(null, joke); | |
| }); | |
| } | |
| }); | |
| } | |
| function runServer(port) { | |
| app.listen(port, () => console.log(`Example app listening on port ${port}!`)); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment