import { Observable } from 'rxjs'; import { Client } from './client.model'; import { AuthHttp } from 'angular2-jwt'; import { JsonToClientConverter } from './json-to-client.converter'; import { ClientSerializer } from './client.serializer'; import { Response } from '@angular/http'; import { IErrorHandler } from '../error/error-handler.interface'; import { ApiPathComponent } from '../api-path-component'; export class ClientService { public constructor( private authHttp: AuthHttp, private converter: JsonToClientConverter, private serializer: ClientSerializer, private baseUrl: string, private errorHandler: IErrorHandler ) {} public create(client: Client): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.clients; return this.authHttp.post(url, this.serializer.serialize(client)) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.converter.toOne(res.json())); } public update(client: Client): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.clients + '/' + client.id; return this.authHttp.put(url, this.serializer.serialize(client)) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.converter.toOne(res.json())); } }