index.js 959 Bytes
Newer Older
ι™ˆεΈ…'s avatar
ι™ˆεΈ… committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
// [START functionsimport]
const functions = require('firebase-functions');
const express = require('express');
const mock = require('./mock/index');

const app = express();

const sendData = (body, req, res) => {
  if (!body) {
    res.send('test');
    return '';
  }
  if ('$body' in body) {
    res.send(body.$body);
    return;
  }
  if (typeof body === 'function') {
    body(req, res);
  }
  res.send(body);
};
app.get('/api', (req, res) => {
  const html = Object.keys(mock).map(url => {
    return `<li><code>${url}</code></li>`;
  });
  res.send(`<ul>${html.join('')}</ul>`);
});

Object.keys(mock).forEach(url => {
  const body = mock[url];
  const urlParams = url.split(' ');

  const path = urlParams[1];
  const send = (req, res) => {
    sendData(body, req, res);
  };
  if (urlParams[0] === 'GET') {
    app.get(path, send);
  }
  if (urlParams[0] === 'POST') {
    app.post(path, send);
  }
});

exports.api = functions.https.onRequest(app);