]>
Commit | Line | Data |
---|---|---|
df98563e C |
1 | import { Injectable } from '@angular/core' |
2 | import 'rxjs/add/operator/catch' | |
3 | import 'rxjs/add/operator/map' | |
7da18e44 | 4 | |
b0f9f39e C |
5 | import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe' |
6 | ||
df98563e | 7 | import { AuthHttp, RestExtractor, RestDataSource, User } from '../../../shared' |
8094a898 | 8 | import { UserCreate, UserUpdate } from '../../../../../../shared' |
7da18e44 C |
9 | |
10 | @Injectable() | |
11 | export class UserService { | |
df98563e | 12 | private static BASE_USERS_URL = API_URL + '/api/v1/users/' |
b0f9f39e | 13 | private bytesPipe = new BytesPipe() |
7da18e44 | 14 | |
df98563e | 15 | constructor ( |
de59c48f C |
16 | private authHttp: AuthHttp, |
17 | private restExtractor: RestExtractor | |
18 | ) {} | |
7da18e44 | 19 | |
4771e000 C |
20 | addUser (userCreate: UserCreate) { |
21 | return this.authHttp.post(UserService.BASE_USERS_URL, userCreate) | |
de59c48f | 22 | .map(this.restExtractor.extractDataBool) |
df98563e | 23 | .catch(this.restExtractor.handleError) |
7da18e44 C |
24 | } |
25 | ||
8094a898 C |
26 | updateUser (userId: number, userUpdate: UserUpdate) { |
27 | return this.authHttp.put(UserService.BASE_USERS_URL + userId, userUpdate) | |
28 | .map(this.restExtractor.extractDataBool) | |
29 | .catch(this.restExtractor.handleError) | |
30 | } | |
31 | ||
32 | getUser (userId: number) { | |
33 | return this.authHttp.get(UserService.BASE_USERS_URL + userId) | |
34 | .map(this.restExtractor.extractDataGet) | |
35 | .catch(this.restExtractor.handleError) | |
36 | } | |
37 | ||
df98563e | 38 | getDataSource () { |
b0f9f39e | 39 | return new RestDataSource(this.authHttp, UserService.BASE_USERS_URL, this.formatDataSource.bind(this)) |
7da18e44 C |
40 | } |
41 | ||
df98563e C |
42 | removeUser (user: User) { |
43 | return this.authHttp.delete(UserService.BASE_USERS_URL + user.id) | |
7da18e44 | 44 | } |
b0f9f39e C |
45 | |
46 | private formatDataSource (users: User[]) { | |
47 | const newUsers = [] | |
48 | ||
49 | users.forEach(user => { | |
50 | let videoQuota | |
51 | if (user.videoQuota === -1) { | |
52 | videoQuota = 'Unlimited' | |
53 | } else { | |
54 | videoQuota = this.bytesPipe.transform(user.videoQuota) | |
55 | } | |
56 | ||
57 | const newUser = Object.assign(user, { | |
58 | videoQuota | |
59 | }) | |
60 | newUsers.push(newUser) | |
61 | }) | |
62 | ||
63 | return newUsers | |
64 | } | |
7da18e44 | 65 | } |