// tslint:disable: max-classes-per-file import { BaseModel } from '@verb/src/libs/shared/base/base.model'; import { StreamModel, StreamSchema } from '@verb/src/libs/stream/stream-metadata'; import { StreamStatusTransitionsModel, StreamStatusTransitionsSchema, } from './stream-status-transitions.model'; export class StreamStatusModel implements BaseModel { public timeRemainingInSeconds: number | null = null; public retrievedAt = new Date(); public stream = new StreamModel(); public transitions = new StreamStatusTransitionsModel(); public constructor(streamStatusSchema?: StreamStatusSchema) { if (streamStatusSchema) { this.fromSchema(streamStatusSchema); } } public fromSchema(streamStatusSchema: StreamStatusSchema) { this.retrievedAt = new Date(streamStatusSchema.retrieved_at); this.stream = new StreamModel(streamStatusSchema.stream); this.timeRemainingInSeconds = streamStatusSchema.time_remaining_in_seconds; this.transitions = new StreamStatusTransitionsModel(streamStatusSchema.transitions); } public toSchema(): StreamStatusSchema { return { retrieved_at: this.retrievedAt.toUTCString(), stream: this.stream.toSchema(), time_remaining_in_seconds: this.timeRemainingInSeconds, transitions: this.transitions.toSchema(), }; } } export interface StreamStatusSchema { retrieved_at: string; stream: StreamSchema; time_remaining_in_seconds: number | null; transitions: StreamStatusTransitionsSchema; }