Skip to content

Commit

Permalink
Merge branch 'dev' of https://github.com/sparcs-kaist/taxi-back into #…
Browse files Browse the repository at this point in the history
…273-안-읽은-메세지-확인
  • Loading branch information
chlehdwon committed Sep 24, 2023
2 parents 9fbd089 + cffb806 commit 9bdbbc4
Show file tree
Hide file tree
Showing 32 changed files with 708 additions and 200 deletions.
12 changes: 9 additions & 3 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// 모듈 require
const express = require("express");
const http = require("http");
const { port: httpPort, eventMode } = require("./loadenv");
const { port: httpPort, eventConfig } = require("./loadenv");
const logger = require("./src/modules/logger");
const { connectDatabase } = require("./src/modules/stores/mongo");
const { startSocketServer } = require("./src/modules/socket");
Expand All @@ -19,6 +19,9 @@ connectDatabase();
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// reverse proxy가 설정한 헤더를 신뢰합니다.
app.set("trust proxy", true);

// [Middleware] CORS 설정
app.use(require("./src/middlewares/cors"));

Expand All @@ -43,8 +46,11 @@ app.use(require("./src/middlewares/limitRate"));
app.use("/docs", require("./src/routes/docs"));

// 2023 추석 이벤트 전용 라우터입니다.
eventMode &&
app.use(`/events/${eventMode}`, require("./src/lottery").lotteryRouter);
eventConfig &&
app.use(
`/events/${eventConfig.mode}`,
require("./src/lottery").lotteryRouter
);

// [Middleware] 모든 API 요청에 대하여 origin 검증
app.use(require("./src/middlewares/originValidator"));
Expand Down
7 changes: 6 additions & 1 deletion loadenv.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,10 @@ module.exports = {
slackWebhookUrl: {
report: process.env.SLACK_REPORT_WEBHOOK_URL || "", // optional
},
eventMode: undefined,
eventConfig: (process.env.EVENT_CONFIG &&
JSON.parse(process.env.EVENT_CONFIG)) || {
mode: "2023fall",
startAt: "2023-09-25T00:00:00+09:00",
endAt: "2023-10-10T00:00:00+09:00",
},
};
28 changes: 18 additions & 10 deletions src/lottery/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,16 @@ const {
transactionModel,
} = require("./modules/stores/mongo");

const { eventMode } = require("../../loadenv");
const { buildResource } = require("../modules/adminResource");
const {
addOneItemStockAction,
addFiveItemStockAction,
} = require("./modules/items");

const { eventConfig } = require("../../loadenv");

// [Routes] 기존 docs 라우터의 docs extend
require("./routes/docs")();
eventConfig && require("./routes/docs")();

const lotteryRouter = express.Router();

Expand All @@ -22,18 +27,21 @@ lotteryRouter.use("/global-state", require("./routes/globalState"));
lotteryRouter.use("/transactions", require("./routes/transactions"));
lotteryRouter.use("/items", require("./routes/items"));
lotteryRouter.use("/public-notice", require("./routes/publicNotice"));
lotteryRouter.use("/quests", require("./routes/quests"));

const resources = [
eventStatusModel,
questModel,
itemModel,
transactionModel,
].map(buildResource());
const itemResource = buildResource([
addOneItemStockAction,
addFiveItemStockAction,
])(itemModel);
const otherResources = [eventStatusModel, questModel, transactionModel].map(
buildResource()
);

const contracts = eventMode && require(`./modules/contracts/${eventMode}`);
const contracts =
eventConfig && require(`./modules/contracts/${eventConfig.mode}`);

module.exports = {
lotteryRouter,
resources,
resources: [itemResource, ...otherResources],
contracts,
};
19 changes: 19 additions & 0 deletions src/lottery/middlewares/timestampValidator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const { eventConfig } = require("../../../loadenv");
const eventPeriod = eventConfig && {
startAt: new Date(eventConfig.startAt),
endAt: new Date(eventConfig.endAt),
};

const timestampValidator = (req, res, next) => {
if (
!eventPeriod ||
req.timestamp >= eventPeriod.endAt ||
req.timestamp < eventPeriod.startAt
) {
return res.status(400).json({ error: "out of date" });
} else {
next();
}
};

module.exports = timestampValidator;
Loading

0 comments on commit 9bdbbc4

Please sign in to comment.