oembed.ts (1003B)
1 const DEFAULT_SITE = "https://mymusics.murad.gg"; 2 3 export function buildOEmbedResponse( 4 requestUrl: string, 5 siteOrigin: string = process.env.PUBLIC_SITE_URL?.trim() || DEFAULT_SITE, 6 ): Record<string, unknown> | null { 7 let parsed: URL; 8 try { 9 parsed = new URL(requestUrl); 10 } catch { 11 return null; 12 } 13 const allowedHosts = new Set([ 14 new URL(siteOrigin).host, 15 "mymusics.murad.gg", 16 "localhost", 17 "127.0.0.1", 18 ]); 19 if (!allowedHosts.has(parsed.host)) return null; 20 if (!parsed.pathname.startsWith("/embed")) return null; 21 22 const iframeSrc = `${siteOrigin.replace(/\/$/, "")}/embed${parsed.search}`; 23 const html = `<iframe src="${iframeSrc}" title="MyMusics" width="380" height="540" style="max-width:100%;border:0;border-radius:12px" loading="lazy" allow="autoplay"></iframe>`; 24 25 return { 26 version: "1.0", 27 type: "rich", 28 provider_name: "MyMusics", 29 provider_url: siteOrigin, 30 title: "MyMusics Player", 31 width: 380, 32 height: 540, 33 html, 34 }; 35 }