import { Observable } from 'rxjs/Observable'; import { Http, RequestOptionsArgs, URLSearchParams } from '@angular/http'; class MySearchParams extends URLSearchParams { constructor(obj : any) { var searchQuery = Object.keys(obj).map(key => `${key}=${encodeURIComponent(obj[key])}`).join('&'); super(searchQuery); } } export class SeCurisResourceServices { constructor(protected http: Http, protected resource: string) { } public get(id?: any) : Observable { let url = `${this.resource}/${id || ''}`; return this.http.get(url).map(response => response.json()); } public create(data: any) : Observable { let url = `${this.resource}`; return this.http.post(url, JSON.stringify(data)).map(response => response.json()); } public modify(id: any, data: any) : Observable { let url = `${this.resource}/${id}`; return this.http.post(url, JSON.stringify(data)).map(response => response.json()); } public remove(id: any) : Observable { let url = `${this.resource}/${id}`; return this.http.delete(url).map(response => response.json()); } public action(id: any, action: string, method = 'POST') : Observable { let url = `${this.resource}/${id}/${action}`; var params = { action: action } var options:RequestOptionsArgs = { url: url, method: method, search: (method == 'GET') && new MySearchParams(params) || undefined, body: (method == 'POST') && JSON.stringify(params) || undefined }; return this.http.request(url, options).map(response => response.json()); } }