Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Injectable } from '@angular/core';
  2. import { Http, Response, Headers, RequestOptions } from '@angular/http';
  3. import { environment } from '../../../environments/environment';
  4. import { Observable } from 'rxjs/Rx';
  5.  
  6. import { contentHeaders } from '../headers';
  7.  
  8. import 'rxjs/add/operator/map';
  9. import 'rxjs/add/operator/catch';
  10.  
  11. @Injectable()
  12. export abstract class RestService<T> {
  13.     protected model;
  14.  
  15.     constructor(public authHttp: Http) {
  16.  
  17.     }
  18.  
  19.     get url() : string {
  20.         return environment.api + this.model;
  21.     }
  22.  
  23.     private handleError(error: any) {
  24.         return error.json().message || error.json()[0].message || 'Server error';
  25.     }
  26.  
  27.     index(): Observable<T[]> {
  28.         return this.authHttp.get(this.url)
  29.             .map((res: Response) => res.json())
  30.             .catch((error: any) => Observable.throw(this.handleError(error)));
  31.     }
  32.  
  33.     view(id: number): Observable<T> {
  34.         return this.authHttp.get(`${this.url}/${id}`)
  35.             .map((res: Response) => res.json())
  36.             .catch((error: any) => Observable.throw(this.handleError(error)));
  37.     }
  38.  
  39.     create(body: Object): Observable<T> {
  40.         let options = new RequestOptions({ headers: contentHeaders });
  41.         return this.authHttp.post(this.url, body, options)
  42.             .map((res: Response) => res.json())
  43.             .catch((error: any) => Observable.throw(this.handleError(error)));
  44.     }
  45.  
  46.     update(body: Object): Observable<T> {
  47.         let options = new RequestOptions({ headers: contentHeaders });
  48.         return this.authHttp.put(`${this.url}/${body['id']}`, body, options)
  49.             .map((res: Response) => res.json())
  50.             .catch((error: any) => Observable.throw(this.handleError(error)));
  51.     }
  52.  
  53.     delete(id: number): Observable<void> {
  54.         return this.authHttp.delete(`${this.url}/${id}`)
  55.             .map((res: Response) => res.json())
  56.             .catch((error: any) => Observable.throw(this.handleError(error)));
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement