]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/shared/rest/rest-extractor.service.ts
Client: centralize http res extraction in a service
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / rest / rest-extractor.service.ts
1 import { Injectable } from '@angular/core';
2 import { Response } from '@angular/http';
3 import { Observable } from 'rxjs/Observable';
4
5 export interface ResultList {
6 data: any[];
7 total: number;
8 }
9
10 @Injectable()
11 export class RestExtractor {
12
13 constructor () { ; }
14
15 extractDataBool(res: Response) {
16 return true;
17 }
18
19 extractDataList(res: Response) {
20 const body = res.json();
21
22 const ret: ResultList = {
23 data: body.data,
24 total: body.total
25 };
26
27 return ret;
28 }
29
30 extractDataGet(res: Response) {
31 return res.json();
32 }
33
34 handleError(res: Response) {
35 let text = 'Server error: ';
36 text += res.text();
37 let json = res.json();
38
39 const error = {
40 json,
41 text
42 };
43
44 return Observable.throw(error);
45 }
46 }