Use typescript standard and lint all files
[oweals/peertube.git] / client / src / app / +admin / requests / shared / request.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 { RequestStats } from './request-stats.model'
7 import { AuthHttp, RestExtractor } from '../../../shared'
8
9 @Injectable()
10 export class RequestService {
11   private static BASE_REQUEST_URL = API_URL + '/api/v1/requests/'
12
13   constructor (
14     private authHttp: AuthHttp,
15     private restExtractor: RestExtractor
16   ) {}
17
18   getStats (): Observable<{ [ id: string ]: RequestStats }> {
19     return this.authHttp.get(RequestService.BASE_REQUEST_URL + 'stats')
20                         .map(this.restExtractor.extractDataGet)
21                         .map(this.buildRequestObjects)
22                         .catch((res) => this.restExtractor.handleError(res))
23   }
24
25   private buildRequestObjects (data: any) {
26     const requestSchedulers = {}
27
28     Object.keys(data).forEach(requestSchedulerName => {
29       requestSchedulers[requestSchedulerName] = new RequestStats(data[requestSchedulerName])
30     })
31
32     return requestSchedulers
33   }
34 }