| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const express = require('express');
- const cors = require('cors');
- const helmet = require('helmet');
- const morgan = require('morgan');
- require('dotenv').config();
- // Import routes
- const symbolRoutes = require('./routes/symbols');
- const candleRoutes = require('./routes/candles');
- const livePriceRoutes = require('./routes/livePrices');
- // Import middleware
- const errorHandler = require('./middleware/errorHandler');
- // Import utilities
- const logger = require('./utils/logger');
- const app = express();
- // Security middleware
- app.use(helmet());
- // CORS configuration
- app.use(cors({
- origin: process.env.CORS_ORIGIN || '*',
- credentials: true
- }));
- // Body parsing middleware
- app.use(express.json({ limit: '10mb' }));
- app.use(express.urlencoded({ extended: true, limit: '10mb' }));
- // Logging middleware
- if (process.env.NODE_ENV === 'development') {
- app.use(morgan('combined'));
- } else {
- app.use(morgan('combined', {
- stream: {
- write: (message) => logger.http(message.trim())
- }
- }));
- }
- // Health check endpoint
- app.get('/health', (req, res) => {
- res.json({
- success: true,
- message: 'Market Data Service is running',
- timestamp: new Date().toISOString(),
- environment: process.env.NODE_ENV
- });
- });
- // API routes
- app.use('/api/symbols', symbolRoutes);
- app.use('/api/candles', candleRoutes);
- app.use('/api/live-prices', livePriceRoutes);
- // 404 handler
- app.use((req, res) => {
- res.status(404).json({
- success: false,
- message: 'Route not found'
- });
- });
- // Error handling middleware (must be last)
- app.use(errorHandler);
- module.exports = app;
|