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








                                                                            




                                                        

                      






                                                                       

                                                       







                                                        

                    






                                                                                            
                                                       


















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

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
    })
  }
}