Skip to content

Commit

Permalink
Add newer cast API additions and stub methods
Browse files Browse the repository at this point in the history
  • Loading branch information
hensm committed Feb 16, 2021
1 parent 5a9a32f commit e4e133c
Show file tree
Hide file tree
Showing 22 changed files with 294 additions and 32 deletions.
4 changes: 0 additions & 4 deletions ext/src/shim/cast/classes/ApiConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@ import { AutoJoinPolicy


export default class ApiConfig {
public additionalSessionRequests: any[] = [];
public customDialLaunchCallback: any = null;
public invisibleSender = false;

constructor (
public sessionRequest: SessionRequest
, public sessionListener: (session: Session) => void
Expand Down
9 changes: 9 additions & 0 deletions ext/src/shim/cast/classes/CredentialsData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use strict";

// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.CredentialsData
export default class DialRequest {
constructor (
public credentials: string
, public credentialsData: string) {
}
}
4 changes: 2 additions & 2 deletions ext/src/shim/cast/classes/Receiver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import ReceiverDisplayStatus from "./ReceiverDisplayStatus";
import Volume from "./Volume";

import { ReceiverType } from "../enums";
import { Capability, ReceiverType } from "../enums";


// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver
Expand All @@ -15,7 +15,7 @@ export default class Receiver {
constructor (
public label: string
, public friendlyName: string
, public capabilities: string[] = []
, public capabilities: Capability[] = []
, public volume: (Volume | null) = null) {
}
}
15 changes: 8 additions & 7 deletions ext/src/shim/cast/classes/SessionRequest.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
"use strict";

import { Capability } from "../enums";
import CredentialsData from "./CredentialsData";
import Timeout from "./Timeout";

import { Capability } from "../enums";


// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest
export default class SessionRequest {
public language: (string | null) = null;
public dialRequest: any = null;

constructor (
public appId: string
, public capabilities = [
Capability.VIDEO_OUT
, Capability.AUDIO_OUT ]
, public requestSessionTimeout: number
= (new Timeout()).requestSession) {}
, public capabilities = [ Capability.VIDEO_OUT
, Capability.AUDIO_OUT ]
, public timeout: number = (new Timeout()).requestSession
, public androidReceiverCompatible = false
, public credentialsData: (CredentialsData | null) = null) {}
}
12 changes: 6 additions & 6 deletions ext/src/shim/cast/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import logger from "../../lib/logger";

import ApiConfig from "./classes/ApiConfig";
import CredentialsData from "./classes/CredentialsData";
import DialRequest from "./classes/DialRequest";
import Error_ from "./classes/Error";
import Image_ from "./classes/Image";
Expand Down Expand Up @@ -56,14 +57,13 @@ let sessionErrorCallback: ErrorCallback;

export {
// Enums
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState
, ErrorCode, ReceiverAction, ReceiverAvailability, ReceiverType
, SenderPlatform, SessionStatus, VolumeControlType
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState, ErrorCode
, ReceiverAction, ReceiverAvailability, ReceiverType, SenderPlatform
, SessionStatus, VolumeControlType

// Classes
, ApiConfig, DialRequest, ReceiverDisplayStatus
, SenderApplication, Session, SessionRequest, Timeout
, Volume
, ApiConfig, CredentialsData, DialRequest, ReceiverDisplayStatus
, SenderApplication, Session, SessionRequest, Timeout, Volume

, Error_ as Error
, Image_ as Image
Expand Down
16 changes: 16 additions & 0 deletions ext/src/shim/cast/media/classes/AudiobookChapterMediaMetadata.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";

import Image from "../../classes/Image";

import { MetadataType } from "../enums";


export default class AudiobookChapterMediaMetadata {
public bookTitle?: string;
public chapterNumber?: number;
public chapterTitle?: string;
public images?: Image[];
public subtitle?: string;
public title?: string;
public type = MetadataType.AUDIOBOOK_CHAPTER;
}
8 changes: 8 additions & 0 deletions ext/src/shim/cast/media/classes/AudiobookContainerMetadata.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"use strict";

export default class AudiobookContainerMetadata {
public authors?: string[];
public narrators?: string[];
public publisher?: string;
public releaseDate?: string;
}
11 changes: 11 additions & 0 deletions ext/src/shim/cast/media/classes/Break.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"use strict";

export default class Break {
public duration?: number;
public isEmbedded?: boolean;
public isWatched = false;

constructor(public id: string
, public breakClipIds: string[]
, public position: number) {}
}
22 changes: 22 additions & 0 deletions ext/src/shim/cast/media/classes/BreakClip.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"use strict";

import VastAdsRequest from "./VastAdsRequest";

import { HlsSegmentFormat } from "../enums";


export default class BreakClip {
public clickThroughUrl?: string;
public contentId?: string;
public contentType?: string;
public contentUrl?: string;
public customData?: {};
public duration?: number;
public hlsSegmentFormat?: HlsSegmentFormat;
public posterUrl?: string;
public title?: string;
public vastAdsRequest?: VastAdsRequest;
public whenSkippable?: number;

constructor(public id: string) {}
}
9 changes: 9 additions & 0 deletions ext/src/shim/cast/media/classes/BreakStatus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use strict";

export default class BreakStatus {
public breakClipId?: string;
public breakId?: string;
public currentBreakClipTime?: number;
public currentBreakTime?: number;
public whenSkippable?: number;
}
17 changes: 17 additions & 0 deletions ext/src/shim/cast/media/classes/ContainerMetadata.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";

import Image from "../../classes/Image";
import MediaMetadata from "../classes/MediaMetadata";

import { ContainerType } from "../enums";


export default class ContainerMetadata {
public containerDuration?: number;
public containerImages?: Image[];
public sections?: MediaMetadata[];
public title?: string;

constructor (public containerType: ContainerType
= ContainerType.GENERIC_CONTAINER) {}
}
8 changes: 8 additions & 0 deletions ext/src/shim/cast/media/classes/LiveSeekableRange.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"use strict";

export default class LiveSeekableRange {
constructor (public start?: number
, public end?: number
, public isMovingWindow?: boolean
, public isLiveDone?: boolean) {}
}
2 changes: 2 additions & 0 deletions ext/src/shim/cast/media/classes/LoadRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import MediaInfo from "./MediaInfo";

export default class LoadRequest {
public activeTrackIds: (number[] | null) = null;
public atvCredentials?: string;
public atvCredentialsType?: string;
public autoplay: (boolean | null) = true;
public currentTime: (number | null) = null;
public customData: any = null;
Expand Down
18 changes: 18 additions & 0 deletions ext/src/shim/cast/media/classes/Media.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,21 @@ import logger from "../../../../lib/logger";

import uuid from "uuid/v1";

import BreakStatus from "./BreakStatus";
import EditTracksInfoRequest from "./EditTracksInfoRequest";
import GetStatusRequest from "./GetStatusRequest";
import LiveSeekableRange from "./LiveSeekableRange";
import MediaInfo from "./MediaInfo";
import PauseRequest from "./PauseRequest";
import PlayRequest from "./PlayRequest";
import QueueData from "./QueueData";
import QueueInsertItemsRequest from "./QueueInsertItemsRequest";
import QueueItem from "./QueueItem";
import QueueReorderItemsRequest from "./QueueReorderItemsRequest";
import QueueUpdateItemsRequest from "./QueueUpdateItemsRequest";
import SeekRequest from "./SeekRequest";
import StopRequest from "./StopRequest";
import VideoInformation from "./VideoInformation";
import VolumeRequest from "./VolumeRequest";

import Volume from "../../classes/Volume";
Expand Down Expand Up @@ -96,18 +100,22 @@ export default class Media {
});

public activeTrackIds: (number[] | null) = null;
public breakStatus?: BreakStatus;
public currentItemId: (number | null) = null;
public customData: any = null;
public currentTime: number = 0;
public idleReason: (string | null) = null;
public items: (QueueItem[] | null) = null;
public liveSeekableRange?: LiveSeekableRange;
public loadingItemId: (number | null) = null;
public media: (MediaInfo | null) = null;
public playbackRate: number = 1;
public playerState: string = PlayerState.IDLE;
public preloadedItemId: (number | null) = null;
public queueData?: QueueData;
public repeatMode: string = RepeatMode.OFF;
public supportedMediaCommands: string[] = [];
public videoInfo?: VideoInformation;
public volume: Volume = new Volume();


Expand Down Expand Up @@ -139,6 +147,16 @@ export default class Media {
logger.info("STUB :: Media#editTracksInfo");
}

public getEstimatedBreakClipTime () {
logger.info("STUB :: Media#getEstimatedBreakClipTime");
}
public getEstimatedBreakTime () {
logger.info("STUB :: Media#getEstimatedBreakTime");
}
public getEstimatedLiveSeekableRange () {
logger.info("STUB :: Media#getEstimatedLiveSeekableRange");
}

public getEstimatedTime (): number {
if (this.currentTime === undefined
|| this.#lastCurrentTime === undefined) {
Expand Down
19 changes: 17 additions & 2 deletions ext/src/shim/cast/media/classes/MediaInfo.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
"use strict";

import Break from "./Break";
import BreakClip from "./BreakClip";
import GenericMediaMetadata from "./GenericMediaMetadata";
import MovieMediaMetadata from "./MovieMediaMetadata";
import MusicTrackMediaMetadata from "./MusicTrackMediaMetadata";
import PhotoMediaMetadata from "./PhotoMediaMetadata";
import TvShowMediaMetadata from "./TvShowMediaMetadata";

import TextTrackStyle from "./TextTrackStyle";
import Track from "./Track";
import UserActionState from "./UserActionState";
import VastAdsRequest from "./VastAdsRequest";

import { StreamType } from "../enums";
import { HlsSegmentFormat
, HlsVideoSegmentFormat
, StreamType } from "../enums";


type Metadata =
Expand All @@ -20,12 +25,22 @@ type Metadata =
| TvShowMediaMetadata;

export default class MediaInfo {
public atvEntity?: string;
public breakClips?: BreakClip[];
public breaks?: Break[];
public customData: any = null;
public contentUrl?: string;
public duration: (number | null) = null;
public entity?: string;
public hlsSegmentFormat?: HlsSegmentFormat;
public hlsVideoSegmentFormat?: HlsVideoSegmentFormat;
public metadata: (Metadata | null) = null;
public startAbsoluteTime?: number;
public streamType: string = StreamType.BUFFERED;
public textTrackStyle: (TextTrackStyle | null) = null;
public tracks: (Track[] | null) = null;
public userActionStates?: UserActionState[];
public vmapAdsRequest?: VastAdsRequest;

constructor (
public contentId: string
Expand Down
19 changes: 19 additions & 0 deletions ext/src/shim/cast/media/classes/MediaMetadata.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"use strict";

import { MetadataType } from "../enums";


export default class MediaMetadata {
public queueItemId?: number;
public sectionDuration?: number;
public sectionStartAbsoluteTime?: number;
public sectionStartTimeInContainer?: number;
public sectionStartTimeInMedia?: number;
public type: MetadataType;
public metadataType: MetadataType;

constructor (type: MetadataType) {
this.type = type;
this.metadataType = type;
}
}
18 changes: 18 additions & 0 deletions ext/src/shim/cast/media/classes/QueueData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"use strict";

import QueueItem from "./QueueItem";

import { RepeatMode } from "../enums";


export default class QueueData {
public shuffle = false;

constructor(public id?: string
, public name?: string
, public description?: string
, public repeatMode?: RepeatMode
, public items?: QueueItem[]
, public startIndex?: number
, public startTime?: number) {}
}
10 changes: 10 additions & 0 deletions ext/src/shim/cast/media/classes/UserActionState.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

import { UserAction } from "../enums";


export default class UserActionState {
public customData: any = null;

constructor (public userAction: UserAction) {}
}
6 changes: 6 additions & 0 deletions ext/src/shim/cast/media/classes/VastAdsRequest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
"use strict";

export default class VastAdsRequest {
public adsResponse?: string;
public adTagUrl?: string;
}
10 changes: 10 additions & 0 deletions ext/src/shim/cast/media/classes/VideoInformation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

import { HdrType } from "../enums";


export default class VideoInformation {
constructor (public width: number
, public height: number
, public hdrType: HdrType) {}
}

0 comments on commit e4e133c

Please sign in to comment.