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