1 | import 'rxjs/add/operator/map';
|
2 | import { Log, Level } from 'ng2-logger/browser';
|
3 | const log = Log.create('rest.class', Level.__NOTHING);
|
4 | import { getRestParams, getParamsUrl } from './params';
|
5 | import { RestHeaders } from './rest-headers';
|
6 |
|
7 | export const DEFAULT_HEADERS = {
|
8 | 'Content-Type': 'application/json',
|
9 | 'Accept': 'application/json'
|
10 | };
|
11 | export class Rest {
|
12 | constructor(endpoint, request, meta) {
|
13 | this.request = request;
|
14 | this.meta = meta;
|
15 |
|
16 |
|
17 | this._headers = RestHeaders.from(DEFAULT_HEADERS);
|
18 |
|
19 | this.array = {
|
20 | get: (params = undefined, doNotSerializeParams) => {
|
21 | return this.req('get', undefined, params, doNotSerializeParams, true);
|
22 | },
|
23 | head: (params = undefined, doNotSerializeParams) => {
|
24 | return this.req('head', undefined, params, doNotSerializeParams, true);
|
25 | },
|
26 | post: (item, params, doNotSerializeParams) => {
|
27 | return this.req('post', item, params, doNotSerializeParams, true);
|
28 | },
|
29 | put: (item, params, doNotSerializeParams) => {
|
30 | return this.req('put', item, params, doNotSerializeParams, true);
|
31 | },
|
32 | patch: (item, params, doNotSerializeParams) => {
|
33 | return this.req('patch', item, params, doNotSerializeParams, true);
|
34 | },
|
35 | delete: (params, doNotSerializeParams) => {
|
36 | return this.req('delete', undefined, params, doNotSerializeParams, true);
|
37 | },
|
38 | jsonp: (params, doNotSerializeParams) => {
|
39 | return this.req('jsonp', undefined, params, doNotSerializeParams, true);
|
40 | }
|
41 | };
|
42 | this.__meta_endpoint = endpoint;
|
43 | }
|
44 | mock(mock) {
|
45 | if ((typeof mock === 'function') || (typeof mock === 'object')) {
|
46 | this.mockHttp = mock;
|
47 | }
|
48 | else {
|
49 | throw `[ng2-rest]
|
50 | .model(...)
|
51 | .mock( < BAD MOCK DATA > )
|
52 | ...
|
53 | `;
|
54 | }
|
55 | return this;
|
56 | }
|
57 | get endpoint() {
|
58 | let e = this.__meta_endpoint;
|
59 | if (this.restQueryParams !== undefined && this._endpointRest !== undefined
|
60 | && typeof this._endpointRest === 'string' && this._endpointRest.trim() !== '')
|
61 | e = this._endpointRest;
|
62 | return e;
|
63 | }
|
64 | set __rest_endpoint(endpoint) {
|
65 | this._endpointRest = endpoint;
|
66 | if (endpoint === undefined) {
|
67 | this.restQueryParams = undefined;
|
68 | }
|
69 | else {
|
70 | this.restQueryParams = getRestParams(endpoint, this.__meta_endpoint);
|
71 | }
|
72 | }
|
73 | creatUrl(params, doNotSerializeParams = false) {
|
74 | return `${this.endpoint}${getParamsUrl(params, doNotSerializeParams)}`;
|
75 | }
|
76 | get headers() {
|
77 | return this._headers;
|
78 | }
|
79 |
|
80 |
|
81 | req(method, item, params, doNotSerializeParams = false, isArray = false) {
|
82 | const modelUrl = this.creatUrl(params, doNotSerializeParams);
|
83 | const body = item ? JSON.stringify(item) : undefined;
|
84 | const result = this.request[method.toLowerCase()](modelUrl, body, this.headers, this.meta, isArray, this.mockHttp);
|
85 | this._headers = RestHeaders.from(DEFAULT_HEADERS);
|
86 | this.mockHttp = undefined;
|
87 | return result;
|
88 | }
|
89 |
|
90 |
|
91 |
|
92 | replay(method) {
|
93 | this.request.replay(method, this.meta);
|
94 | }
|
95 | get(params, doNotSerializeParams = false) {
|
96 | return this.req('get', undefined, params, doNotSerializeParams);
|
97 | }
|
98 | head(params, doNotSerializeParams = false) {
|
99 | return this.req('head', undefined, params, doNotSerializeParams);
|
100 | }
|
101 | post(item, params, doNotSerializeParams = false) {
|
102 | return this.req('post', item, params, doNotSerializeParams);
|
103 | }
|
104 | put(item, params, doNotSerializeParams = false) {
|
105 | return this.req('put', item, params, doNotSerializeParams);
|
106 | }
|
107 | patch(item, params, doNotSerializeParams = false) {
|
108 | return this.req('patch', item, params, doNotSerializeParams);
|
109 | }
|
110 | delete(params, doNotSerializeParams = false) {
|
111 | return this.req('delete', undefined, params, doNotSerializeParams);
|
112 | }
|
113 | jsonp(params, doNotSerializeParams = false) {
|
114 | return this.req('jsonp', undefined, params, doNotSerializeParams);
|
115 | }
|
116 | }
|
117 |
|
\ | No newline at end of file |