]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/+admin/friends/shared/friend.service.ts
Client: lazy load admin area
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / friends / shared / friend.service.ts
CommitLineData
e2f555ca 1import { Injectable } from '@angular/core';
e2f555ca 2import { Observable } from 'rxjs/Observable';
c16ce1de
C
3import 'rxjs/add/operator/catch';
4import 'rxjs/add/operator/map';
e2f555ca
C
5
6import { Friend } from './friend.model';
55fa55a9 7import { AuthHttp, RestExtractor, ResultList } from '../../../shared';
e2f555ca
C
8
9@Injectable()
10export class FriendService {
11 private static BASE_FRIEND_URL: string = '/api/v1/pods/';
12
13 constructor (
14 private authHttp: AuthHttp,
de59c48f 15 private restExtractor: RestExtractor
e2f555ca
C
16 ) {}
17
55fa55a9 18 getFriends() {
e2f555ca 19 return this.authHttp.get(FriendService.BASE_FRIEND_URL)
55fa55a9
C
20 .map(this.restExtractor.extractDataList)
21 .map(this.extractFriends)
de59c48f 22 .catch((res) => this.restExtractor.handleError(res));
e2f555ca
C
23 }
24
49abbbbe 25 makeFriends(notEmptyHosts) {
e105c19c 26 const body = {
49abbbbe 27 hosts: notEmptyHosts
e105c19c
C
28 };
29
30 return this.authHttp.post(FriendService.BASE_FRIEND_URL + 'makefriends', body)
de59c48f
C
31 .map(this.restExtractor.extractDataBool)
32 .catch((res) => this.restExtractor.handleError(res));
e2f555ca
C
33 }
34
35 quitFriends() {
36 return this.authHttp.get(FriendService.BASE_FRIEND_URL + 'quitfriends')
37 .map(res => res.status)
de59c48f 38 .catch((res) => this.restExtractor.handleError(res));
e2f555ca 39 }
55fa55a9
C
40
41 private extractFriends(result: ResultList) {
42 const friends: Friend[] = result.data;
43 const totalFriends = result.total;
44
45 return { friends, totalFriends };
46 }
e2f555ca 47}