import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; import { Response } from '@angular/http'; import { Observable } from 'rxjs'; import { HALConfig } from '../hal.config'; import { ApiErrorResponse } from './api-error.model'; import { IApiErrorHandler } from './api-error-handler.interface'; export class ApiErrorHandler implements IApiErrorHandler { public handle(errorResponse: Response): ErrorObservable { const json: any = errorResponse.json(); const messages: string[] = []; if (json[HALConfig.embedded]) { const embedded: Array<{name: string, message: string}> = json[HALConfig.embedded]; for (const errorJson of embedded) { messages.push(errorJson.message); } } const errors: Error[] = messages.map((message: string) => new Error(message)); return Observable.throw(new ApiErrorResponse(errorResponse.status, errorResponse.statusText, errors)); } }