UNPKG

5.51 kBJavaScriptView Raw
1import { Observable } from 'rxjs/Observable';
2import 'rxjs/add/operator/map';
3import 'rxjs/add/operator/takeUntil';
4import 'rxjs/add/operator/take';
5import 'rxjs/add/operator/toPromise';
6import { Resource } from './resource.service';
7/**
8 *
9 * @export
10 * @abstract
11 * @class SimpleResource
12 * @extends {Resource<T, A, TA>}
13 * @template E Endpoint type
14 * @template A Single modle type
15 * @template TA Array Model Type
16 * @template RP rest url parameters type
17 * @template QP query parameter type
18 */
19class ExtendedResource {
20 // add(endpoint: E, model: string, group?: string, name?: string, description?: string) { }
21 constructor(endpoint, path_model) {
22 this.endpoint = endpoint;
23 this.path_model = path_model;
24 /**
25 * Get model by rest params
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}
91ExtendedResource.doNotSerializeQueryParams = false;
92ExtendedResource.handlers = [];
93/**
94 *
95 * @export
96 * @class SimpleResource
97 * @template A single model type
98 * @template TA array model type
99 * @template RP rest parameters type
100 * @template QP query parameters type
101 */
102export 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}
120SimpleResource._isSetQueryParamsSerialization = false;
121//# sourceMappingURL=simple-resource.js.map
\No newline at end of file