import ApiClient from './ApiClient'; import * as PR from './types/PlaybackReport'; import urls from './urls'; const mapPlaybackReportResponse = ( pr: PR.PlaybackReportResponse, ): PR.PlaybackReport => ({ id: pr.id, profileId: pr.profile_id, createdAt: pr.created_at, status: pr.status, name: pr.name, deviceIds: pr.device_ids, start: pr.start, end: pr.end, rowsPerPage: pr.rows_per_page, destinationBucket: pr.destination_bucket, error: pr.error, r: { playbackReportFiles: (pr.r.playback_report_files || []).map((prf) => ({ createdAt: prf.created_at, pageNumber: prf.page_number, destinationKey: prf.destination_key, })), }, }); export default class PlaybackReportClient { async getPlaybackReports(this: ApiClient): Promise { const data = await this.requestProtected< PR.GetPlaybackReportRequest, PR.GetPlaybackReportResponse >({ method: 'GET', url: urls.playbackReports(), }); return data.map(mapPlaybackReportResponse); } async generatePlaybackReport( this: ApiClient, body: { deviceIds: string[]; name: string; start: string; end: string; rowsPerPage: number; }, ): Promise { const data = await this.requestProtected< PR.GeneratePlaybackReportRequest, PR.GeneratePlaybackReportResponse >({ method: 'POST', url: urls.playbackReports(), body: { device_ids: body.deviceIds, name: body.name, start: body.start, end: body.end, rows_per_page: body.rowsPerPage, }, }); return mapPlaybackReportResponse(data); } }