import { LocaleService } from '../common/i18n'; import { BasicService } from '../common/utils'; 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 extends BasicService { constructor($L: LocaleService, protected http: Http, protected resource: string) { super($L); } public get(id?: any) : Observable { let url = `${this.resource}/${id || ''}`; return this.http.get(url).map(response => response.json()).catch(err => super.processErrorResponse(err)); } public create(data: any) : Observable { let url = `${this.resource}`; return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err)); } public modify(id: any, data: any) : Observable { let url = `${this.resource}/${id}`; return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err)); } public remove(id: any) : Observable { let url = `${this.resource}/${id}`; return this.http.delete(url).map(response => response.json()).catch(err => super.processErrorResponse(err)); } public action(id: any, action: string, method = 'POST', params : any = {}) : Observable { let url = `${this.resource}/${id}/${action}`; 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()).catch(err => super.processErrorResponse(err)); } }