/* * Tugas Besar 3 WBD - AMEN */ 'use strict' const express = require('express') const db = require('../service/db') const cloud = require('../service/cloud') const relay = require('../service/relay') let app = express.Router() // Administration. app.post('/init', async function (req, res, next) { let id = Number(req.projek.driver.id) let token = req.body.token try { cloud.register(id, token) let model = await db.ChatHistory.prepareAsync([id, relay.get(id)]) res.json({ chats: model.chats.map(chat => { return { from: chat.owner_id === id ? 'me' : 'them', text: chat.content } }) }) } catch (e) { next(e) } }) app.delete('/', function (req, res) { let id = Number(req.projek.driver.id) cloud.unregister(id) relay.disassociate(id) res.json({}) }) // Messaging. app.post('/', async function (req, res, next) { let id = Number(req.projek.driver.id) let message = req.body.message try { let model = await db.ChatHistory.prepareAsync([id, relay.get(id)]) model.chats.push({ owner_id: id, content: message }) await relay.sendAsync(id, message) await model.save() res.json({}) } catch (e) { next(e) } }) module.exports = app