aboutsummaryrefslogblamecommitdiffhomepage
path: root/shared/server-commands/videos/video-stats-command.ts
blob: b9b99bfb57ec0f9e2a9f140439e71e1ff5e8f081 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                         






                                                                                                                                       

                      






                                                                       

                                                       







                                                        

                    






                                                                                            
                                                       


















                                                                         
import { pick } from '@shared/core-utils'
import { HttpStatusCode, VideoStatsOverall, VideoStatsRetention, VideoStatsTimeserie, VideoStatsTimeserieMetric } from '@shared/models'
import { AbstractCommand, OverrideCommandOptions } from '../shared'

export class VideoStatsCommand extends AbstractCommand {

  getOverallStats (options: OverrideCommandOptions & {
    videoId: number | string
    startDate?: string
    endDate?: string
  }) {
    const path = '/api/v1/videos/' + options.videoId + '/stats/overall'

    return this.getRequestBody<VideoStatsOverall>({
      ...options,
      path,

      query: pick(options, [ 'startDate', 'endDate' ]),

      implicitToken: true,
      defaultExpectedStatus: HttpStatusCode.OK_200
    })
  }

  getTimeserieStats (options: OverrideCommandOptions & {
    videoId: number | string
    metric: VideoStatsTimeserieMetric
    startDate?: Date
    endDate?: Date
  }) {
    const path = '/api/v1/videos/' + options.videoId + '/stats/timeseries/' + options.metric

    return this.getRequestBody<VideoStatsTimeserie>({
      ...options,
      path,

      query: pick(options, [ 'startDate', 'endDate' ]),
      implicitToken: true,
      defaultExpectedStatus: HttpStatusCode.OK_200
    })
  }

  getRetentionStats (options: OverrideCommandOptions & {
    videoId: number | string
  }) {
    const path = '/api/v1/videos/' + options.videoId + '/stats/retention'

    return this.getRequestBody<VideoStatsRetention>({
      ...options,
      path,

      implicitToken: true,
      defaultExpectedStatus: HttpStatusCode.OK_200
    })
  }
}