UNPKG

@aws-amplify/amplify-category-api

Version:
96 lines (77 loc) 2.45 kB
const express = require("express"); const bodyParser = require('body-parser'); const port = process.env.PORT || 3001; const { addPostToDDB, scanPostsFromDDB, getPostFromDDB } = require('./DynamoDBActions'); const app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // Enable CORS for all methods app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*") res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept") next() }); const checkAuthRules = (req, res, next) => { const jwt = req.header("Authorization") || ""; const [, jwtBody] = jwt.split("."); const obj = JSON.parse( jwtBody ? Buffer.from(jwtBody, "base64").toString("utf-8") : "{}" ); //Customer can perform logic on JWT body //console.log(obj); next(); //Failure example: // const err = new Error("Access denied"); // err.statusCode = 403; // return next(err); } app.use(checkAuthRules); app.get("/posts", async (req, res, next) => { try { const result = await scanPostsFromDDB(); res.contentType("application/json").send(result); } catch (err) { next(err); } }); app.get("/post", async (req, res, next) => { console.log(req.query.id); try { const result = await getPostFromDDB(req.query.id); res.contentType("application/json").send(result); } catch (err) { next(err); } }); app.post("/post", async (req, res, next) => { try { const result = await addPostToDDB(req.body); res.contentType("application/json").send(result); } catch (err) { next(err); } }); app.use((req, res, next) => { try { const result = `Please try GET on /posts, /post?id=xyz, or a POST to /post with JSON {\"id\":\"123\",\"title\":\"Fargate test\"}`; res.contentType("application/json").send(result); } catch (err) { next(err); } }); // Error middleware must be defined last app.use((err, req, res, next) => { console.error(err.message); if (!err.statusCode) err.statusCode = 500; // If err has no specified error code, set error code to 'Internal Server Error (500)' res .status(err.statusCode) .json({ message: err.message }) .end(); }); app.listen(port, () => { console.log('Example app listening at http://localhost:' + port); });