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

Serve OAuth client metadata and JWKS

+55
+55
apps/app-proxy/src/index.ts
··· 11 11 * Learn more at https://developers.cloudflare.com/workers/ 12 12 */ 13 13 14 + const metadata = { 15 + redirect_uris: ['https://rocksky.app/oauth/callback'], 16 + response_types: ['code'], 17 + grant_types: ['authorization_code', 'refresh_token'], 18 + scope: 19 + 'atproto repo:app.rocksky.album repo:app.rocksky.artist repo:app.rocksky.graph.follow repo:app.rocksky.like repo:app.rocksky.playlist repo:app.rocksky.scrobble repo:app.rocksky.shout repo:app.rocksky.song repo:app.rocksky.feed.generator repo:fm.teal.alpha.feed.play repo:fm.teal.alpha.actor.status', 20 + token_endpoint_auth_method: 'private_key_jwt', 21 + token_endpoint_auth_signing_alg: 'ES256', 22 + jwks_uri: 'https://rocksky.app/jwks.json', 23 + application_type: 'web', 24 + client_id: 'https://rocksky.app/oauth-client-metadata.json', 25 + client_name: 'Rocksky', 26 + client_uri: 'https://rocksky.app', 27 + dpop_bound_access_tokens: true, 28 + }; 29 + 30 + const jwks = { 31 + keys: [ 32 + { 33 + kty: 'EC', 34 + use: 'sig', 35 + alg: 'ES256', 36 + kid: '2dfa3fd9-57b3-4738-ac27-9e6dadec13b7', 37 + crv: 'P-256', 38 + x: 'V_00KDnoEPsNqbt0y2Ke8v27Mv9WP70JylDUD5rvIek', 39 + y: 'HAyjaQeA2DU6wjZO0ggTadUS6ij1rmiYTxzmWeBKfRc', 40 + }, 41 + { 42 + kty: 'EC', 43 + use: 'sig', 44 + alg: 'ES256', 45 + kid: '5e816ff2-6bff-4177-b1c0-67ad3cd3e7cd', 46 + crv: 'P-256', 47 + x: 'YwEY5NsoYQVB_G7xPYMl9sUtxRbcPFNffnZcTS5nbPQ', 48 + y: '5n5mybPvISyYAnRv1Ii1geqKfXv2GA8p9Xemwx2a8CM', 49 + }, 50 + { 51 + kty: 'EC', 52 + use: 'sig', 53 + kid: 'a1067a48-a54a-43a0-9758-4d55b51fdd8b', 54 + crv: 'P-256', 55 + x: 'yq17Nd2DGcjP1i9I0NN3RBmgSbLQUZOtG6ec5GaqzmU', 56 + y: 'ieIU9mcfaZwAW5b3WgJkIRgddymG_ckcZ0n1XjbEIvc', 57 + }, 58 + ], 59 + }; 60 + 14 61 export default { 15 62 async fetch(request, env, ctx): Promise<Response> { 16 63 const url = new URL(request.url); ··· 19 66 const API_ROUTES = ['/login', '/profile', '/token', '/now-playing', '/ws', '/oauth-client-metadata.json', '/jwks.json']; 20 67 21 68 console.log('Request URL:', url.pathname, url.pathname === '/client-metadata.json'); 69 + 70 + if (url.pathname === '/oauth-client-metadata.json') { 71 + return Response.json(metadata); 72 + } 73 + 74 + if (url.pathname === '/jwks.json') { 75 + return Response.json(jwks); 76 + } 22 77 23 78 if ( 24 79 API_ROUTES.includes(url.pathname) ||