1 import { Injectable } from '@angular/core'
2 import 'rxjs/add/operator/catch'
3 import 'rxjs/add/operator/map'
5 import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe'
7 import { AuthHttp, RestExtractor, RestDataSource, User } from '../../../shared'
8 import { UserCreate } from '../../../../../../shared'
11 export class UserService {
12 private static BASE_USERS_URL = API_URL + '/api/v1/users/'
13 private bytesPipe = new BytesPipe()
16 private authHttp: AuthHttp,
17 private restExtractor: RestExtractor
20 addUser (userCreate: UserCreate) {
21 return this.authHttp.post(UserService.BASE_USERS_URL, userCreate)
22 .map(this.restExtractor.extractDataBool)
23 .catch(this.restExtractor.handleError)
27 return new RestDataSource(this.authHttp, UserService.BASE_USERS_URL, this.formatDataSource.bind(this))
30 removeUser (user: User) {
31 return this.authHttp.delete(UserService.BASE_USERS_URL + user.id)
34 private formatDataSource (users: User[]) {
37 users.forEach(user => {
39 if (user.videoQuota === -1) {
40 videoQuota = 'Unlimited'
42 videoQuota = this.bytesPipe.transform(user.videoQuota)
45 const newUser = Object.assign(user, {
48 newUsers.push(newUser)