rsanchez
2017-03-10 2762277c60db7df5ad3214b10a0dd93d4f2f1128
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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<any> {
      let url = `${this.resource}/${id || ''}`;
      return this.http.get(url).map(response => response.json());
    }
    public create(data: any) : Observable<any> {
      let url = `${this.resource}`;
      return this.http.post(url, JSON.stringify(data)).map(response => response.json());
    }
    public modify(id: any, data: any) : Observable<any> {
      let url = `${this.resource}/${id}`;
      return this.http.post(url, JSON.stringify(data)).map(response => response.json());
    }
    public remove(id: any) : Observable<any> {
      let url = `${this.resource}/${id}`;
      return this.http.delete(url).map(response => response.json());
    }
    
    public action(id: any, action: string, method = 'POST') : Observable<any> {
      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());
    }
}