"use strict"; const debug = require("debug")("api"); import express from "express"; import {isIP, isInt} from "validator"; import {getClientIp} from "request-ip"; import Promise from "bluebird"; const SAMPQuery = Promise.promisify(require("samp-query")); const resolve4 = Promise.promisify(require("dns").resolve4); import ApiCache from "apicache"; const apicache = ApiCache.options({ debug: true }).middleware; const start = async () => { debug("start"); const webserver = express(); webserver.set("case sensitive routing", true); webserver.set("json spaces", 2); webserver.set("trust proxy", true); webserver.set("x-powered-by", false); webserver.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Expose-Headers", "Content-Type"); debug(`serving reqeust ${req.url} from ${getClientIp(req)}`); next(); }); webserver.get("/status", (req, res) => {
import authorize from './middleware/authorize'; import AuthController from './controllers/AuthController'; import ContactController from './controllers/ContactController'; import GitHubController from './controllers/GitHubController'; import MediaController from './controllers/MediaController'; import PostsController from './controllers/PostsController'; import ProjectCategoriesController from './controllers/ProjectCategoriesController'; import ProjectsController from './controllers/ProjectsController'; import UsersController from './controllers/UsersController'; let router = express.Router(); let cache = apicache.options({ redisClient: redis.createClient({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT }) }).middleware; router.post('/auth', AuthController.auth); router.get('/users', authorize, UsersController.list); router.get('/users/:id', authorize, UsersController.get); router.post('/users', authorize, UsersController.create); router.put('/users/:id', authorize, UsersController.update); router.delete('/users/:id', authorize, UsersController.delete); router.post('/media/signed-url', authorize, MediaController.getSignedURL); router.delete('/media/:key', authorize, MediaController.delete); router.get('/posts', PostsController.list);
var apicache = require("apicache"); // Initialize apicache var cache = apicache.middleware; apicache.options({ debug: true }); // Mongoose database schema var Element = require("./models/element.js"); exports.viewAllElements = function(req, res) { req.apicacheGroup = "elements"; Element.find(function(err, elements) { if (err) { res.send(err); } res.json(elements); }); }; exports.addElement = function(req, res) { apicache.clear("elements"); var element = new Element(); element.name = req.body.name; element.description = req.body.description; element.save(function(err) { if (err) { res.send(err); }