56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { catchError } from 'rxjs'
|
|
import { environment } from 'src/environments/environment'
|
|
import { HttpClient, HttpParams } from '@angular/common/http'
|
|
import { Injectable } from '@angular/core'
|
|
import { RestExtractor } from '@app/core'
|
|
import { VideoService } from '@app/shared/shared-main'
|
|
import { VideoStatsOverall, VideoStatsRetention, VideoStatsTimeserie, VideoStatsTimeserieMetric } from '@peertube/peertube-models'
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class VideoStatsService {
|
|
static BASE_VIDEO_STATS_URL = environment.apiUrl + '/api/v1/videos/'
|
|
|
|
constructor (
|
|
private authHttp: HttpClient,
|
|
private restExtractor: RestExtractor
|
|
) { }
|
|
|
|
getOverallStats (options: {
|
|
videoId: string
|
|
startDate?: Date
|
|
endDate?: Date
|
|
}) {
|
|
const { videoId, startDate, endDate } = options
|
|
|
|
let params = new HttpParams()
|
|
if (startDate) params = params.append('startDate', startDate.toISOString())
|
|
if (endDate) params = params.append('endDate', endDate.toISOString())
|
|
|
|
return this.authHttp.get<VideoStatsOverall>(VideoService.BASE_VIDEO_URL + '/' + videoId + '/stats/overall', { params })
|
|
.pipe(catchError(err => this.restExtractor.handleError(err)))
|
|
}
|
|
|
|
getTimeserieStats (options: {
|
|
videoId: string
|
|
metric: VideoStatsTimeserieMetric
|
|
startDate?: Date
|
|
endDate?: Date
|
|
}) {
|
|
const { videoId, metric, startDate, endDate } = options
|
|
|
|
let params = new HttpParams()
|
|
if (startDate) params = params.append('startDate', startDate.toISOString())
|
|
if (endDate) params = params.append('endDate', endDate.toISOString())
|
|
|
|
return this.authHttp.get<VideoStatsTimeserie>(VideoService.BASE_VIDEO_URL + '/' + videoId + '/stats/timeseries/' + metric, { params })
|
|
.pipe(catchError(err => this.restExtractor.handleError(err)))
|
|
}
|
|
|
|
getRetentionStats (videoId: string) {
|
|
return this.authHttp.get<VideoStatsRetention>(VideoService.BASE_VIDEO_URL + '/' + videoId + '/stats/retention')
|
|
.pipe(catchError(err => this.restExtractor.handleError(err)))
|
|
}
|
|
}
|