main.js 2.3 KB

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