1 | import { Observable } from 'rxjs/Observable';
|
2 | import 'rxjs/add/operator/map';
|
3 | import 'rxjs/add/operator/takeUntil';
|
4 | import 'rxjs/add/operator/take';
|
5 | import 'rxjs/add/operator/toPromise';
|
6 | import { Resource } from './resource.service';
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | class ExtendedResource {
|
20 |
|
21 | constructor(endpoint, path_model) {
|
22 | this.endpoint = endpoint;
|
23 | this.path_model = path_model;
|
24 | |
25 |
|
26 |
|
27 | this.model = (restParams) => {
|
28 | return {
|
29 | get: (queryPrams) => {
|
30 | return Observable.create((observer) => {
|
31 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
32 | .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
33 | .observable
|
34 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
35 | });
|
36 | },
|
37 | patch: (item, queryParams) => {
|
38 | return Observable.create((observer) => {
|
39 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
40 | .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
41 | .observable
|
42 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
43 | });
|
44 | },
|
45 | head: (queryPrams) => {
|
46 | return Observable.create((observer) => {
|
47 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
48 | .head([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
49 | .observable
|
50 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
51 | });
|
52 | },
|
53 | query: (queryPrams) => {
|
54 | return Observable.create((observer) => {
|
55 | ExtendedResource.handlers.push(this.rest.model(restParams).
|
56 | array
|
57 | .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
58 | .observable
|
59 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
60 | });
|
61 | },
|
62 | post: (item, queryParams) => {
|
63 | return Observable.create((observer) => {
|
64 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
65 | .post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
66 | .observable
|
67 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
68 | });
|
69 | },
|
70 | put: (item, queryParams) => {
|
71 | return Observable.create((observer) => {
|
72 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
73 | .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
|
74 | .observable
|
75 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
76 | });
|
77 | },
|
78 | delete: (queryPrams) => {
|
79 | return Observable.create((observer) => {
|
80 | ExtendedResource.handlers.push(this.rest.model(restParams)
|
81 | .delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)
|
82 | .observable
|
83 | .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
|
84 | });
|
85 | }
|
86 | };
|
87 | };
|
88 | this.rest = Resource.create(endpoint, path_model);
|
89 | }
|
90 | }
|
91 | ExtendedResource.doNotSerializeQueryParams = false;
|
92 | ExtendedResource.handlers = [];
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 | export class SimpleResource {
|
103 | constructor(endpoint, model) {
|
104 | let rest = new ExtendedResource(endpoint, model);
|
105 | this.model = rest.model;
|
106 | }
|
107 | static set doNotSerializeQueryParams(value) {
|
108 | if (!SimpleResource._isSetQueryParamsSerialization) {
|
109 | SimpleResource._isSetQueryParamsSerialization = true;
|
110 | ExtendedResource.doNotSerializeQueryParams = value;
|
111 | return;
|
112 | }
|
113 | console.warn(`Query params serialization already set as
|
114 | ${ExtendedResource.doNotSerializeQueryParams},`);
|
115 | }
|
116 | static __destroy() {
|
117 | ExtendedResource.handlers.forEach(h => h.unsubscribe());
|
118 | }
|
119 | }
|
120 | SimpleResource._isSetQueryParamsSerialization = false;
|
121 |
|
\ | No newline at end of file |