zuzak/gov.zk

View on GitHub
routes/civilservant.js

Summary

Maintainability
A
0 mins
Test Coverage
var app = require('..')
const cors = require('cors')
const AU = require('ansi_up')
const request = require('request-promise')

let scram = 'ok'

app.get(__l('/civilservant'), async function (req, res, next) {
  const [inventory, ofn, quotes, scrabble] = await Promise.all([
    request({
      url: 'https://files.chippy.ch/cs/inventory.json',
      json: true
    }),
    request({
      url: 'https://files.chippy.ch/cs/ofn.json',
      json: true
    }),
    request({
      url: 'https://files.chippy.ch/cs/quotes.json',
      json: true
    }),
    request({
      url: 'https://files.chippy.ch/cs/scrabble.json',
      json: true
    })
  ]).catch((e) => { next(e) })

  return res.render('bucket.pug', {
    req,
    inventory,
    quotes,
    scrabble,
    scram,
    ofn: Object.keys(ofn).length
  })
})

app.get('/civilservant/console', async function (req, res, next) {
  const ansify = new AU.default() // eslint-disable-line new-cap
  const stdout = await request({
    url: 'https://files.chippy.ch/cs/stdout.txt'
  })
  let splat = stdout.trim().split('======')
  splat = splat.map((x) => x.split('------'))
  splat = splat.map((x) => {
    x[1] = ansify.ansi_to_html(x[1])
    return x
  })
  return res.render('console.pug', {
    req,
    stdout: splat// JSON.stringify(splat, null, 4)
  })
})

app.get('/civilservant/notes', async function (req, res, next) {
  const stdout = await request({
    url: 'https://files.chippy.ch/cs/notes.txt'
  })
  const notes = stdout.trim().split('\n')
  return res.render('notes.pug', {
    req,
    notes
  })
})

app.get('/civilservant/scram.json', cors(), (req, res) => res.json(scram))
app.get('/civilservant/scram', (req, res) => res.render('scram.pug', { req, scram }))
app.post('/civilservant/scram', (req, res) => {
  scram = {
    user: req.user,
    reason: req.body.reason
  }
  return res.render('scram.pug', { req, scram })
})
app.get('/civilservant/scram.json', (req, res) => res.json(scram))