Wolkendama-API / app.js
app.js
Raw
const path = require("path");

const express = require("express");
const cors = require("cors");
const app = express();
const helmet = require("helmet");
const xss = require("xss-clean");
const cookieParser = require("cookie-parser");
const compression = require("compression");

const shopRouter = require("./Routes/shopRouter");
const userRouter = require("./Routes/userRouter");
const customerRouter = require("./Routes/customerRouter");

const checkoutController = require("./Controller/checkoutController");

const AppError = require("./utils/appError");
const globalErrorHandler = require("./Controller/globalErrorHandler");

app.use(
  cors({
    origin: [
      "http://localhost:3001",
      "http://localhost:3002",
      "https://admin.wolkendama.com",
      "https://wolkendama.com",
    ],
    credentials: true,
  })
);

app.use(cookieParser());

// Data sanitization against XSS
app.use(xss());

// http security
app.use(helmet());

// Request compression
app.use(compression());

///////////////////////////////////////////
app.use(express.static(path.join(__dirname, "public")));
app.use(express.static(__dirname, { dotfiles: "allow" }));

app.post(
  "/webhook",
  express.raw({ type: "application/json" }),
  checkoutController.webhookCheckout
);

///////////////////////////////////////////
//Routing
app.use(express.json({ limit: "10kb" }));

app.use("/api/v1/shop", shopRouter);
// app.use("/api/v1/blog", blogRouter);
app.use("/api/v1/customer", customerRouter);
// app.use("/api/v1/review", reviewRouter);
app.use("/api/v1/user-admin", userRouter);
app.post("/api/v1/checkout", checkoutController.createCheckout);

app.all("*", (req, res, next) => {
  next(new AppError(`Can't find ${req.originalUrl}on this server!`, 404));
});

app.use(globalErrorHandler);

module.exports = app;