mymusics

retro MySpace-style music player
Log | Files | Refs | README

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 }