UNPKG

6ews-ggregator-pp

Version:

A news aggregator application that collects and presents news articles from various sources in a unified interface. It offers customizable filters, real-time updates, and a user-friendly reading experience.

86 lines (73 loc) 2.97 kB
const express = require('express'); const axios = require('axios'); const app = express(); // Middleware setup app.use(express.json()); // Database simulation let newsDatabase = [ { id: 1, title: 'Breaking News: Global Summit on Climate Change Concludes', category: 'Environment', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget consectetur libero, ac vestibulum velit. Nulla facilisi. Suspendisse potenti. Cras aliquet fermentum nunc, sed tristique quam rhoncus sit amet. Mauris ultrices augue in consequat gravida.', source: 'Global News Network', publishedAt: new Date().toISOString(), }, { id: 2, title: 'Tech Giants Announce Partnership for AI Research', category: 'Technology', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget consectetur libero, ac vestibulum velit. Nulla facilisi. Suspendisse potenti. Cras aliquet fermentum nunc, sed tristique quam rhoncus sit amet. Mauris ultrices augue in consequat gravida.', source: 'Tech Innovate', publishedAt: new Date().toISOString(), }, { id: 3, title: 'Finance Update: Stock Market Hits Record High', category: 'Finance', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget consectetur libero, ac vestibulum velit. Nulla facilisi. Suspendisse potenti. Cras aliquet fermentum nunc, sed tristique quam rhoncus sit amet. Mauris ultrices augue in consequat gravida.', source: 'Financial Times', publishedAt: new Date().toISOString(), }, ]; // Routes app.get('/', (req, res) => { res.send('Welcome to our sophisticated news aggregator!'); }); app.get('/news', async (req, res) => { try { const news = await fetchNewsFromAPI(); // Apply advanced filtering, sorting, or other operations as needed const filteredNews = applyFilters(news, req.query); // Simulate real-time updates with a delay setTimeout(() => { res.json(filteredNews); }, 3000); } catch (error) { console.error('Error fetching news:', error); res.status(500).json({ error: 'Failed to fetch news' }); } }); // Function to fetch news from an external API (simulated) async function fetchNewsFromAPI() { const response = await axios.get('https://api.newsapi.com/v2/news'); return response.data; } // Function to apply advanced filters function applyFilters(news, filters) { let filteredNews = [...news]; // Apply category filter if provided if (filters.category) { filteredNews = filteredNews.filter(item => item.category === filters.category); } // Apply source filter if provided if (filters.source) { filteredNews = filteredNews.filter(item => item.source === filters.source); } return filteredNews; } // Start the server const port = 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); });