// tslint:disable: max-classes-per-file import { BaseModel } from '@verb/src/libs/shared/base/base.model'; import { StreamAttendeeModel, StreamAttendeeSchema, StreamFlagsModel, StreamFlagsSchema, StreamMetricsModel, StreamMetricsSchema, StreamServersModel, StreamServersSchema, } from '@verb/src/libs/stream/stream-metadata'; import { StreamTransitionStatusModel, StreamTransitionStatusSchema, } from '@verb/src/libs/stream/stream-transition'; export class StreamAttendeeStatusResponseModel implements BaseModel { public attendeeActiveCount = 0; public attendeeActivePosition = 0; public attendeeId = ''; public attendeeWaitingCount = 0; public attendeeWaitingPosition = 0; public attendees: StreamAttendeeModel[] = []; public flags = new StreamFlagsModel(); public metrics = new StreamMetricsModel(); public servers = new StreamServersModel(); public status = new StreamTransitionStatusModel(); public streamId = 0; public streamInstanceId = ''; public timeRemainingInSeconds: number | null = null; public constructor(streamAttendeeStatusResponseSchema?: StreamAttendeeStatusResponseSchema) { if (streamAttendeeStatusResponseSchema) { this.fromSchema(streamAttendeeStatusResponseSchema); } } public fromSchema(streamAttendeeStatusResponseSchema: StreamAttendeeStatusResponseSchema) { this.attendeeActiveCount = streamAttendeeStatusResponseSchema.attendee_active_count; this.attendeeActivePosition = streamAttendeeStatusResponseSchema.attendee_active_position; this.attendeeId = streamAttendeeStatusResponseSchema.attendee_id; this.attendeeWaitingCount = streamAttendeeStatusResponseSchema.attendee_waiting_count; this.attendeeWaitingPosition = streamAttendeeStatusResponseSchema.attendee_waiting_position; this.attendees = streamAttendeeStatusResponseSchema.attendees.map( attendeeSchema => new StreamAttendeeModel(attendeeSchema), ); this.flags = new StreamFlagsModel(streamAttendeeStatusResponseSchema.flags); this.metrics = new StreamMetricsModel(streamAttendeeStatusResponseSchema.metrics); this.servers = new StreamServersModel(streamAttendeeStatusResponseSchema.servers); this.status = new StreamTransitionStatusModel(streamAttendeeStatusResponseSchema.status); this.streamId = streamAttendeeStatusResponseSchema.stream_id; this.streamInstanceId = streamAttendeeStatusResponseSchema.stream_instance_id; this.timeRemainingInSeconds = streamAttendeeStatusResponseSchema.time_remaining_in_seconds; } public toSchema(): StreamAttendeeStatusResponseSchema { return { attendee_active_count: this.attendeeActiveCount, attendee_active_position: this.attendeeActivePosition, attendee_id: this.attendeeId, attendee_waiting_count: this.attendeeWaitingCount, attendee_waiting_position: this.attendeeWaitingPosition, attendees: this.attendees.map(attendee => attendee.toSchema()), flags: this.flags.toSchema(), metrics: this.metrics.toSchema(), servers: this.servers.toSchema(), status: this.status.toSchema(), stream_id: this.streamId, stream_instance_id: this.streamInstanceId, time_remaining_in_seconds: this.timeRemainingInSeconds, }; } } export interface StreamAttendeeStatusResponseSchema { attendee_active_count: number; attendee_active_position: number; attendee_id: string; attendee_waiting_count: number; attendee_waiting_position: number; attendees: StreamAttendeeSchema[]; flags: StreamFlagsSchema; metrics: StreamMetricsSchema; servers: StreamServersSchema; status: StreamTransitionStatusSchema; stream_id: number; stream_instance_id: string; time_remaining_in_seconds: number | null; }