feat(streams): add on-demand live request accept end and playback token APIs

This commit is contained in:
2026-01-14 17:35:00 +00:00
parent dc9c7df567
commit 7a39112ef4
3 changed files with 402 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
import { createHmac } from 'crypto';
type StreamPlaybackPayload = {
sessionId: string;
viewerDeviceId: string;
userId: string;
exp: number;
};
const secret = process.env.BETTER_AUTH_SECRET;
if (!secret) {
throw new Error('BETTER_AUTH_SECRET is required for stream playback token signing');
}
const sign = (data: string): string => createHmac('sha256', secret).update(data).digest('base64url');
export const createStreamPlaybackToken = (
payload: Omit<StreamPlaybackPayload, 'exp'>,
ttlSeconds = 60 * 15,
): string => {
const body: StreamPlaybackPayload = {
...payload,
exp: Math.floor(Date.now() / 1000) + ttlSeconds,
};
const encodedPayload = Buffer.from(JSON.stringify(body), 'utf8').toString('base64url');
const signature = sign(encodedPayload);
return `${encodedPayload}.${signature}`;
};