123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- const PouchDB = require('pouchdb')
- // const uuidv4 = require('uuid/v4')
- // const moment = require('moment')
- // const superagent = require('superagent')
- /* Add Mango queries to PouchDB. */
- // PouchDB.plugin(require('pouchdb-find'))
- /* Initialize database. */
- const db = new PouchDB('http://api:password@localhost:5984/apecs_sessions')
- /**
- * Projects
- */
- const projects = async function (req, res) {
- /* Set headers. */
- // const headers = req.headers
- // console.log('HEADERS', headers)
- /* Set body. */
- const body = req.body
- // console.log('BODY', body)
- /* Validate body. */
- if (!body) {
- /* Set status code. */
- res.status(400)
- return res.json({
- error: 'A request BODY is required with this request.'
- })
- }
- /* Initialize query. */
- let query = null
- /* Initialize result. */
- let result = null
- /* Validate session id. */
- // a9c8d400-88fa-404f-975a-2d23dfe0616b
- if (body.sessionId) {
- result = await db.get(body.sessionId)
- .catch(err => console.error('SESSION ID ERROR:', err))
- }
- /* Validate authentication hash. */
- // 0a4145ed9f2f63c0118f2ea2778e446c183abbdbe666e745df318c095049757c
- if (!body.sessionId && body.authHash) {
- /* Set (mango) query. */
- query = {
- selector: {
- 'authHash': body.authHash
- },
- sort: [{'createdAt':'desc'}]
- }
- /* Request data. */
- result = await db.find(query)
- .catch(err => console.error('AUTH HASH ERROR:', err))
- /* Validate documents. */
- if (result && !result.docs) {
- result = null
- } else {
- /* Select most recent document. */
- result = result.docs[0]
- }
- }
- /* Validate query. */
- if (!result) {
- if (!body.sessionId && !body.authHash) {
- /* Set status code. */
- res.status(400)
- return res.json({
- error: '`sessionId` OR `authHash` is required for this request.',
- })
- }
- /* Set status code. */
- res.status(404)
- return res.json({
- error: 'No session was found',
- sessionId: body.sessionId,
- authHash: body.authHash,
- })
- }
- /* Return session data. */
- res.json({
- // headers,
- ...result,
- })
- }
- module.exports = projects
|