@phenixrts/sdk
Version:
JavaScript SDK
109 lines (108 loc) • 5.63 kB
TypeScript
import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken';
import { ISubscribeWithOfferRequest, ISubscribeWithoutOfferRequest } from '../api/Subscribe';
import { BitrateMode, BitrateState } from '../api/SetTemporaryMaximalBitrate';
import { BitsPerSecond, Millisecond } from '../../units/Units';
export type SubscribeStatus = 'ok' | 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'port-in-range-not-found' | 'failed';
export type SetRemoteDescriptionStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';
export type SetTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';
export type RemoveTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';
export type AddIceCandidatesStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';
export type DestroyStreamStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';
export interface IStream {
streamId: string;
sharedSecret: string;
tenancy: string;
}
export interface ISubscribeSuccessResponseInit {
status: 'ok';
stream: IStream;
lag: Millisecond;
rtcConfiguration?: RTCConfiguration;
setRemoteDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
createOfferDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
createAnswerDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
[key: string]: unknown;
}
export interface ISubscribeFailureResponseInit {
status: 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'port-in-range-not-found' | 'failed';
}
export interface ISubscribeRequestCallback {
(request: ISubscribeWithOfferRequest | ISubscribeWithoutOfferRequest): Promise<void>;
}
export interface ISubscribeResponseCallback {
(response: ISubscribeSuccessResponseInit | ISubscribeFailureResponseInit): Promise<void>;
}
export type SubscribeOptions = {
onSubscribeRequestCallback?: ISubscribeRequestCallback;
onSubscribeResponseCallback?: ISubscribeResponseCallback;
};
export type IPublishSuccessResponseInit = {
status: 'ok';
stream: IStream;
lag?: Millisecond;
rtcConfiguration?: RTCConfiguration;
setRemoteDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
createOfferDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
createAnswerDescriptionResponse?: {
sessionDescription: RTCSessionDescriptionInit;
};
};
export type IPublishFailureResponseInit = {
status: 'not-found' | 'geo-restricted' | 'geo-blocked' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'missing-channel-or-room-id' | 'port-in-range-not-found' | 'failed';
};
interface ISetRemoteDescriptionResponseInit {
status: SetRemoteDescriptionStatus;
sessionDescription?: RTCSessionDescriptionInit;
}
interface IAddIceCandidatesResponseInit {
status: AddIceCandidatesStatus;
options?: string[];
}
interface ISetTemporaryMaximalBitrateResponseInit {
status: SetTemporaryMaximalBitrateStatus;
}
interface IDestroyStreamResponseInit {
status: DestroyStreamStatus;
}
export default class EndPoint {
private readonly _logger;
private readonly _uri;
private readonly _timeout;
private _roundTripTime;
constructor(uri: string, timeout: number);
get roundTripTime(): number;
toString(): string;
ping(): Promise<number>;
subscribe(token: EncodedEdgeToken, localSessionDescription: RTCSessionDescriptionInit | null, failureCount: number, options?: SubscribeOptions): Promise<ISubscribeSuccessResponseInit | ISubscribeFailureResponseInit>;
publish(name: string, token: EncodedEdgeToken, localSessionDescription: RTCSessionDescriptionInit | null, failureCount: number): Promise<IPublishSuccessResponseInit | IPublishFailureResponseInit>;
setRemoteDescription(stream: IStream, sessionDescription: RTCSessionDescriptionInit): Promise<ISetRemoteDescriptionResponseInit>;
limitBitrate(stream: IStream, elapsedInMilliseconds: number, bitrateInBitsPerSecond: BitsPerSecond, bitrateState: BitrateState, bitrateMode: BitrateMode): Promise<ISetTemporaryMaximalBitrateResponseInit>;
addIceCandidates(stream: IStream, candidates: RTCIceCandidate[], discoveryCompleted: boolean, options?: string[]): Promise<IAddIceCandidatesResponseInit>;
destroyStream(stream: IStream, reason: string): Promise<IDestroyStreamResponseInit>;
destroyStreamOnUnmount(stream: IStream, reason: string): Promise<void>;
private buildUrl;
private buildPingUrl;
private mapHttpStatusToPublishStatus;
private mapHttpStatusToSubscribeStatus;
private mapHttpStatusToSetRemoteDescriptionStatus;
private mapHttpStatusToSetTemporaryMaximalBitrateStatus;
private mapHttpStatusToAddIceCandidatesStatus;
private mapHttpStatusToSetDestroyStreamStatus;
private convertHttpResponseToSubscribeResponse;
private convertHttpResponseToPublishResponse;
private convertIRtcConfigurationToRTCConfiguration;
private convertHttpResponseToSetRemoteDescriptionResponse;
private convertHttpResponseToAddIceCandidatesResponse;
private convertHttpResponseToDestroyStreamResponse;
}
export {};