]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/+admin/request-schedulers/shared/request-schedulers.service.ts
Add MANAGE_PEERTUBE_FOLLOW right
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / request-schedulers / shared / request-schedulers.service.ts
1 import { Injectable } from '@angular/core'
2 import { HttpClient } from '@angular/common/http'
3 import { Observable } from 'rxjs/Observable'
4 import 'rxjs/add/operator/catch'
5 import 'rxjs/add/operator/map'
6
7 import { RequestSchedulerStats } from '../../../../../../shared'
8 import { RestExtractor } from '../../../shared'
9 import { RequestSchedulerStatsAttributes } from './request-schedulers-stats-attributes.model'
10
11 @Injectable()
12 export class RequestSchedulersService {
13 private static BASE_REQUEST_URL = API_URL + '/api/v1/request-schedulers/'
14
15 constructor (
16 private authHttp: HttpClient,
17 private restExtractor: RestExtractor
18 ) {}
19
20 getStats () {
21 return this.authHttp.get<RequestSchedulerStats>(RequestSchedulersService.BASE_REQUEST_URL + 'stats')
22 .map(res => this.buildRequestObjects(res))
23 .catch(res => this.restExtractor.handleError(res))
24 }
25
26 private buildRequestObjects (data: RequestSchedulerStats) {
27 const requestSchedulers: { [ id: string ]: RequestSchedulerStatsAttributes } = {}
28
29 Object.keys(data).forEach(requestSchedulerName => {
30 requestSchedulers[requestSchedulerName] = new RequestSchedulerStatsAttributes(data[requestSchedulerName])
31 })
32
33 return requestSchedulers
34 }
35 }