UNPKG

@xnstream/player-sdk

Version:

XStream Player SDK - A powerful video player SDK for streaming content

54 lines 1.78 kB
import { generateSignature, base64Encode, generateRandomSalt } from './crypto'; import { unixTimestamp, getRandomSpecialCharacter, shuffleArray } from './utils'; const generateMediaSignature = (context, aps) => { const nce = generateRandomSalt(); const at = unixTimestamp(); const ss = getRandomSpecialCharacter(); const csparams = shuffleArray(['app_id', 'at', 'nce', 'slo']); const resource = context.rs; const message = csparams.map(el => { switch (el) { case 'app_id': return context.app_id; case 'at': return at; case 'nce': return nce; case 'slo': return context.slo; default: return ''; } }); const sigMessage = [...message, resource].join(ss); return { app_id: context.app_id, platform: 'web', device: context.device, csparams: csparams.join(','), resource: context.rs, ssparams: ['ts', 'exp'], hservice: 'edge_nova_sec', slo: base64Encode(new TextEncoder().encode(context.slo)), ss: ss, at: at, nce: nce, sid: context.sid, sig: base64Encode(generateSignature(sigMessage, aps)), }; }; export async function fetchMediaSession(baseUrl, context, aps) { const sig = generateMediaSignature(context, aps); const response = await fetch(`${baseUrl}/playback/url`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(sig), }); if (!response.ok) { throw new Error('Failed to fetch media session'); } return response.json(); } //# sourceMappingURL=mediaSession.js.map