@xnstream/player-sdk
Version:
XStream Player SDK - A powerful video player SDK for streaming content
30 lines • 1.08 kB
JavaScript
import Hls from 'hls.js';
import { generateSignature, base64Encode } from '../utils/crypto';
export class FragmentLoader extends Hls.DefaultConfig.loader {
constructor(config, sig) {
super(config);
this.sig = sig;
}
load(context, config, callbacks) {
const parts = context.url.split('/');
const segmentName = parts[parts.length - 1];
if (this.sig) {
const reqSig = base64Encode(generateSignature(segmentName, this.sig))
.replace(/=/g, '')
.replace(/\+/g, '-')
.replace(/\//g, '_');
const separator = context.url.includes('?') ? '&' : '?';
context.url = `${context.url}${separator}sig=${reqSig}`;
}
super.load(context, config, callbacks);
}
}
// Create a factory function to satisfy HLS.js loader type
export const createFragmentLoader = (_config, sig) => {
return class extends FragmentLoader {
constructor(config) {
super(config, sig);
}
};
};
//# sourceMappingURL=FragmentLoader.js.map