main.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'dotenv/config';
  2. import express from 'express';
  3. import Logs from "./libs/logs.js";
  4. import requireInternalToken from './middleware/requireInternalToken.js';
  5. import tradingRoutes from './routes/trading.js';
  6. const app = express();
  7. app.use((req, res, next) => {
  8. const origin = req.headers.origin;
  9. res.header('Access-Control-Allow-Origin', origin || '*');
  10. res.header('Access-Control-Allow-Credentials', 'true');
  11. res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Internal-Token');
  12. res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  13. res.header('Vary', 'Origin');
  14. if (req.method === 'OPTIONS') {
  15. return res.sendStatus(200);
  16. }
  17. next();
  18. });
  19. app.use(express.json({ limit: '10mb' }));
  20. app.use((req, res, next) => {
  21. res.badRequest = (data, msg) => {
  22. if (!msg && typeof data === 'string') {
  23. msg = data;
  24. data = undefined;
  25. }
  26. return res.status(400).json({ statusCode: 400, code: -1, message: msg ?? 'Bad Request', data });
  27. }
  28. res.serverError = (data, msg) => {
  29. if (!msg && typeof data === 'string') {
  30. msg = data;
  31. data = undefined;
  32. }
  33. return res.status(500).json({ statusCode: 500, code: -1, message: msg ?? 'Internal Server Error', data });
  34. }
  35. res.unauthorized = (data, msg) => {
  36. if (!msg && typeof data === 'string') {
  37. msg = data;
  38. data = undefined;
  39. }
  40. return res.status(401).json({ statusCode: 401, code: -1, message: msg ?? 'Unauthorized', data });
  41. }
  42. res.sendSuccess = (data, msg) => {
  43. const response = { statusCode: 200, code: 0, message: msg ?? 'OK' }
  44. if (data !== undefined) {
  45. response.data = data;
  46. }
  47. return res.status(200).json(response);
  48. }
  49. res.sendError = (err) => {
  50. if (err.cause === 400 || err.status === 400) {
  51. return res.badRequest(err.data, err.message);
  52. }
  53. return res.serverError(err.data, err.message);
  54. }
  55. next();
  56. });
  57. app.get('/health', (req, res) => {
  58. res.sendSuccess({ service: 'polymarket', status: 'ok' });
  59. });
  60. app.use('/api/trading', requireInternalToken, tradingRoutes);
  61. // 启动服务
  62. const PORT = process.env.PORT || 9021;
  63. app.listen(PORT, () => Logs.out(`Polymarket service running on port ${PORT}`));