A decentralized music tracking and discovery platform built on AT Protocol 🎵

Merge branch 'main' into feat/feed-generator

+9 -4
+6 -3
apps/api/src/index.ts
··· 12 likeTrack, 13 unLikeTrack, 14 } from "lovedtracks/lovedtracks.service"; 15 import { scrobbleTrack } from "nowplaying/nowplaying.service"; 16 import { rateLimiter } from "ratelimiter"; 17 import subscribe from "subscribers"; ··· 37 import usersApp from "./users/app"; 38 import webscrobbler from "./webscrobbler/app"; 39 40 subscribe(ctx); 41 42 const app = new Hono(); ··· 47 rateLimiter({ 48 limit: 1000, 49 window: 30, // 👈 30 seconds 50 - }), 51 ); 52 53 app.use("*", async (c, next) => { ··· 162 ctx.redis.get(`nowplaying:${user.did}:status`), 163 ]); 164 return c.json( 165 - nowPlaying ? { ...JSON.parse(nowPlaying), is_playing: status === "1" } : {}, 166 ); 167 }); 168 ··· 314 listeners: 1, 315 sha256: item.track.sha256, 316 id: item.scrobble.id, 317 - })), 318 ); 319 }); 320
··· 12 likeTrack, 13 unLikeTrack, 14 } from "lovedtracks/lovedtracks.service"; 15 + import dns from "node:dns"; 16 import { scrobbleTrack } from "nowplaying/nowplaying.service"; 17 import { rateLimiter } from "ratelimiter"; 18 import subscribe from "subscribers"; ··· 38 import usersApp from "./users/app"; 39 import webscrobbler from "./webscrobbler/app"; 40 41 + dns.setDefaultResultOrder("ipv4first"); 42 + 43 subscribe(ctx); 44 45 const app = new Hono(); ··· 50 rateLimiter({ 51 limit: 1000, 52 window: 30, // 👈 30 seconds 53 + }) 54 ); 55 56 app.use("*", async (c, next) => { ··· 165 ctx.redis.get(`nowplaying:${user.did}:status`), 166 ]); 167 return c.json( 168 + nowPlaying ? { ...JSON.parse(nowPlaying), is_playing: status === "1" } : {} 169 ); 170 }); 171 ··· 317 listeners: 1, 318 sha256: item.track.sha256, 319 id: item.scrobble.id, 320 + })) 321 ); 322 }); 323
+3 -1
apps/api/src/server.ts
··· 4 import express from "express"; 5 import { createProxyMiddleware } from "http-proxy-middleware"; 6 import { createServer } from "lexicon"; 7 import API from "./xrpc"; 8 9 const proxyMiddleware = createProxyMiddleware<Request, Response>({ 10 target: "http://localhost:8000", ··· 29 30 app.listen(process.env.ROCKSKY_XPRC_PORT || 3004, () => { 31 console.log( 32 - `Rocksky XRPC API is running on port ${process.env.ROCKSKY_XRPC_PORT || 3004}`, 33 ); 34 });
··· 4 import express from "express"; 5 import { createProxyMiddleware } from "http-proxy-middleware"; 6 import { createServer } from "lexicon"; 7 + import dns from "node:dns"; 8 import API from "./xrpc"; 9 + dns.setDefaultResultOrder("ipv4first"); 10 11 const proxyMiddleware = createProxyMiddleware<Request, Response>({ 12 target: "http://localhost:8000", ··· 31 32 app.listen(process.env.ROCKSKY_XPRC_PORT || 3004, () => { 33 console.log( 34 + `Rocksky XRPC API is running on port ${process.env.ROCKSKY_XRPC_PORT || 3004}` 35 ); 36 });