atr-components 0.2.417 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/atr-components.module.d.ts +9 -9
- package/atr-public-api.d.ts +53 -53
- package/core/animations/animations.d.ts +1 -1
- package/core/animations/fly-in.d.ts +1 -1
- package/core/animations/scroll-screen.d.ts +1 -1
- package/core/auth/auth.guard.d.ts +11 -11
- package/core/base/atr-common.d.ts +347 -347
- package/core/directive/error-img.directive.d.ts +10 -10
- package/core/directive/hq-spin.directive.d.ts +13 -13
- package/core/directive/role.directive.d.ts +16 -16
- package/core/interceptor/base.interceptor.d.ts +17 -17
- package/core/ngz-module/cus-zorro-antd.module.d.ts +75 -75
- package/core/pipe/china-num.pipe.d.ts +7 -7
- package/core/pipe/count.pipe.d.ts +7 -7
- package/core/pipe/day.pipe.d.ts +8 -8
- package/core/pipe/defaultVal.pipe.d.ts +7 -7
- package/core/pipe/dicts.pipe.d.ts +10 -10
- package/core/pipe/image-pipe.pipe.d.ts +8 -8
- package/core/pipe/is-empty.pipe.d.ts +7 -7
- package/core/pipe/is-not-empty.pipe.d.ts +7 -7
- package/core/pipe/oss.pipe.d.ts +7 -7
- package/core/pipe/ossStatic.pipe.d.ts +7 -7
- package/core/pipe/pipe-module.module.d.ts +21 -21
- package/core/pipe/remove-html.pipe.d.ts +10 -10
- package/core/pipe/safe-compute.pipe.d.ts +7 -7
- package/core/pipe/safe-html.pipe.d.ts +10 -10
- package/core/pipe/safe-url.pipe.d.ts +10 -10
- package/core/routereuse/atr-reuse-strategy.d.ts +19 -19
- package/core/services/dict/dict.service.d.ts +20 -20
- package/core/services/http.service.d.ts +31 -31
- package/core/services/menu.service.d.ts +29 -29
- package/core/services/upload-oss.service.d.ts +14 -14
- package/core/utils/ToolsUtil.d.ts +180 -180
- package/core/utils/localstorage.util.d.ts +15 -15
- package/core/utils/sessionstorage.util.d.ts +15 -15
- package/{esm2020 → esm2022}/atr-components.mjs +4 -4
- package/esm2022/atr-components.module.mjs +36 -0
- package/{esm2020 → esm2022}/atr-public-api.mjs +54 -54
- package/{esm2020 → esm2022}/core/animations/animations.mjs +9 -9
- package/{esm2020 → esm2022}/core/animations/fly-in.mjs +18 -18
- package/{esm2020 → esm2022}/core/animations/scroll-screen.mjs +22 -22
- package/{esm2020 → esm2022}/core/auth/auth.guard.mjs +37 -37
- package/esm2022/core/base/atr-common.mjs +47 -0
- package/{esm2020 → esm2022}/core/directive/error-img.directive.mjs +31 -31
- package/{esm2020 → esm2022}/core/directive/hq-spin.directive.mjs +48 -48
- package/esm2022/core/directive/role.directive.mjs +69 -0
- package/{esm2020 → esm2022}/core/interceptor/base.interceptor.mjs +165 -165
- package/{esm2020 → esm2022}/core/ngz-module/cus-zorro-antd.module.mjs +292 -292
- package/{esm2020 → esm2022}/core/pipe/china-num.pipe.mjs +36 -36
- package/{esm2020 → esm2022}/core/pipe/count.pipe.mjs +34 -34
- package/{esm2020 → esm2022}/core/pipe/day.pipe.mjs +24 -24
- package/{esm2020 → esm2022}/core/pipe/defaultVal.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/dicts.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/core/pipe/image-pipe.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/is-empty.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/is-not-empty.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/oss.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/ossStatic.pipe.mjs +17 -17
- package/esm2022/core/pipe/pipe-module.module.mjs +38 -0
- package/{esm2020 → esm2022}/core/pipe/remove-html.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/core/pipe/safe-compute.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/safe-html.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/safe-url.pipe.mjs +20 -20
- package/esm2022/core/routereuse/atr-reuse-strategy.mjs +79 -0
- package/esm2022/core/services/dict/dict.service.mjs +152 -0
- package/{esm2020 → esm2022}/core/services/http.service.mjs +306 -306
- package/{esm2020 → esm2022}/core/services/menu.service.mjs +130 -130
- package/{esm2020 → esm2022}/core/services/upload-oss.service.mjs +74 -74
- package/esm2022/core/utils/ToolsUtil.mjs +622 -0
- package/{esm2020 → esm2022}/core/utils/localstorage.util.mjs +94 -94
- package/{esm2020 → esm2022}/core/utils/sessionstorage.util.mjs +72 -72
- package/{esm2020 → esm2022}/lib/hello/hello.component.mjs +15 -15
- package/esm2022/lib/hello/hello.module.mjs +20 -0
- package/esm2022/lib/shared/atr-shared.module.mjs +204 -0
- package/esm2022/lib/shared/echarts/echarts.component.mjs +77 -0
- package/esm2022/lib/shared/form/form.component.mjs +574 -0
- package/esm2022/lib/shared/img-canvas/img-canvas.component.mjs +132 -0
- package/esm2022/lib/shared/local-upload/local-upload.component.mjs +68 -0
- package/esm2022/lib/shared/quill-editor/quill-editor.component.mjs +248 -0
- package/esm2022/lib/shared/select-icons/select-icons.component.mjs +90 -0
- package/{esm2020 → esm2022}/lib/shared/select-tree/select-tree.component.mjs +55 -55
- package/{esm2020 → esm2022}/lib/shared/service/busi.service.mjs +69 -69
- package/{esm2020 → esm2022}/lib/shared/share.service.mjs +107 -107
- package/esm2022/lib/shared/table/table-form-item/table-form-item.component.mjs +96 -0
- package/esm2022/lib/shared/table/table-td/table-td.component.mjs +165 -0
- package/esm2022/lib/shared/table/table.component.mjs +749 -0
- package/{esm2020 → esm2022}/lib/shared/upload/upload.component.mjs +274 -274
- package/{esm2020 → esm2022}/lib/shared/validators/atr-validtors.mjs +8 -8
- package/esm2022/lib/shared/video/video.component.mjs +16 -0
- package/esm2022/lib/shared/view-form/view-form.component.mjs +181 -0
- package/{fesm2020 → fesm2022}/atr-components.mjs +5311 -5312
- package/fesm2022/atr-components.mjs.map +1 -0
- package/{atr-components.d.ts → index.d.ts} +5 -5
- package/lib/hello/hello.component.d.ts +8 -8
- package/lib/hello/hello.module.d.ts +8 -8
- package/lib/shared/atr-shared.module.d.ts +36 -33
- package/lib/shared/echarts/echarts.component.d.ts +34 -34
- package/lib/shared/form/form.component.d.ts +45 -45
- package/lib/shared/img-canvas/img-canvas.component.d.ts +28 -28
- package/lib/shared/local-upload/local-upload.component.d.ts +22 -22
- package/lib/shared/quill-editor/quill-editor.component.d.ts +45 -45
- package/lib/shared/select-icons/select-icons.component.d.ts +24 -24
- package/lib/shared/select-tree/select-tree.component.d.ts +23 -23
- package/lib/shared/service/busi.service.d.ts +20 -20
- package/lib/shared/share.service.d.ts +14 -14
- package/lib/shared/table/table-form-item/table-form-item.component.d.ts +25 -25
- package/lib/shared/table/table-td/table-td.component.d.ts +26 -26
- package/lib/shared/table/table.component.d.ts +94 -94
- package/lib/shared/upload/upload.component.d.ts +53 -53
- package/lib/shared/validators/atr-validtors.d.ts +2 -2
- package/lib/shared/video/video.component.d.ts +7 -7
- package/lib/shared/view-form/view-form.component.d.ts +28 -28
- package/package.json +14 -22
- package/esm2020/atr-components.module.mjs +0 -38
- package/esm2020/core/base/atr-common.mjs +0 -47
- package/esm2020/core/directive/role.directive.mjs +0 -69
- package/esm2020/core/pipe/pipe-module.module.mjs +0 -40
- package/esm2020/core/routereuse/atr-reuse-strategy.mjs +0 -79
- package/esm2020/core/services/dict/dict.service.mjs +0 -152
- package/esm2020/core/utils/ToolsUtil.mjs +0 -622
- package/esm2020/lib/hello/hello.module.mjs +0 -22
- package/esm2020/lib/shared/atr-shared.module.mjs +0 -199
- package/esm2020/lib/shared/echarts/echarts.component.mjs +0 -77
- package/esm2020/lib/shared/form/form.component.mjs +0 -574
- package/esm2020/lib/shared/img-canvas/img-canvas.component.mjs +0 -132
- package/esm2020/lib/shared/local-upload/local-upload.component.mjs +0 -68
- package/esm2020/lib/shared/quill-editor/quill-editor.component.mjs +0 -248
- package/esm2020/lib/shared/select-icons/select-icons.component.mjs +0 -90
- package/esm2020/lib/shared/table/table-form-item/table-form-item.component.mjs +0 -96
- package/esm2020/lib/shared/table/table-td/table-td.component.mjs +0 -165
- package/esm2020/lib/shared/table/table.component.mjs +0 -749
- package/esm2020/lib/shared/video/video.component.mjs +0 -15
- package/esm2020/lib/shared/view-form/view-form.component.mjs +0 -181
- package/fesm2015/atr-components.mjs +0 -5522
- package/fesm2015/atr-components.mjs.map +0 -1
- package/fesm2020/atr-components.mjs.map +0 -1
|
@@ -1,306 +1,306 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpRequest, HttpEventType, HttpHeaders } from "@angular/common/http";
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { atr_static_datas } from '../base/atr-common';
|
|
5
|
-
import { LocalStorageUtil } from '../utils/localstorage.util';
|
|
6
|
-
import { ToolsUtil } from "../utils/ToolsUtil";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
export class HttpService {
|
|
10
|
-
constructor(httpClient) {
|
|
11
|
-
this.httpClient = httpClient;
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param url
|
|
15
|
-
* @param params
|
|
16
|
-
*/
|
|
17
|
-
this.post = (url, params, options, headers, noTip = false) => {
|
|
18
|
-
return new Observable(observe => {
|
|
19
|
-
// console.log("aaa");
|
|
20
|
-
let _headers = new HttpHeaders();
|
|
21
|
-
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
22
|
-
_headers = this.getDefaultHeader(_headers);
|
|
23
|
-
}
|
|
24
|
-
_headers = this.getNormalHeader(_headers);
|
|
25
|
-
if (headers) {
|
|
26
|
-
_headers = headers;
|
|
27
|
-
}
|
|
28
|
-
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
29
|
-
let withCredentials = true;
|
|
30
|
-
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
31
|
-
withCredentials = options.isWithCredentials;
|
|
32
|
-
}
|
|
33
|
-
// console.log(_headers);
|
|
34
|
-
for (const key of Object.keys(params)) {
|
|
35
|
-
if (params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
36
|
-
params[key] = JSON.stringify(params[key]);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
this.httpClient.post(url, null, { headers: _headers, params: params, withCredentials: withCredentials })
|
|
40
|
-
.subscribe(result => {
|
|
41
|
-
observe.next(result);
|
|
42
|
-
observe.unsubscribe();
|
|
43
|
-
}, error => {
|
|
44
|
-
observe.error(error);
|
|
45
|
-
observe.unsubscribe();
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
this.postBody = (url, params, options, headers, noTip = false) => {
|
|
50
|
-
return new Observable(observe => {
|
|
51
|
-
// console.log("aaa");
|
|
52
|
-
let _headers = new HttpHeaders();
|
|
53
|
-
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
54
|
-
_headers = this.getDefaultHeader(_headers);
|
|
55
|
-
}
|
|
56
|
-
_headers = this.getNormalHeader(_headers);
|
|
57
|
-
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
58
|
-
let withCredentials = true;
|
|
59
|
-
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
60
|
-
withCredentials = options.isWithCredentials;
|
|
61
|
-
}
|
|
62
|
-
// console.log(_headers);
|
|
63
|
-
/*for(const key of Object.keys(params)) {
|
|
64
|
-
if(params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
65
|
-
params[key] = JSON.stringify(params[key])
|
|
66
|
-
}
|
|
67
|
-
}*/
|
|
68
|
-
this.httpClient.post(url, params, { headers: _headers, params: {}, withCredentials: withCredentials })
|
|
69
|
-
.subscribe(result => {
|
|
70
|
-
observe.next(result);
|
|
71
|
-
observe.unsubscribe();
|
|
72
|
-
}, error => {
|
|
73
|
-
observe.error(error);
|
|
74
|
-
observe.unsubscribe();
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
};
|
|
78
|
-
this.get = (url, params, options, noTip = false) => {
|
|
79
|
-
return new Observable(observe => {
|
|
80
|
-
let _headers = new HttpHeaders();
|
|
81
|
-
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
82
|
-
_headers = this.getDefaultHeader(_headers);
|
|
83
|
-
}
|
|
84
|
-
_headers = this.getNormalHeader(_headers);
|
|
85
|
-
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
86
|
-
let withCredentials = false;
|
|
87
|
-
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
88
|
-
withCredentials = options.isWithCredentials;
|
|
89
|
-
}
|
|
90
|
-
// console.log(options)
|
|
91
|
-
// console.log(_headers)
|
|
92
|
-
this.httpClient.get(url, {
|
|
93
|
-
headers: _headers,
|
|
94
|
-
params: params,
|
|
95
|
-
withCredentials: withCredentials
|
|
96
|
-
}).subscribe(result => {
|
|
97
|
-
observe.next(result);
|
|
98
|
-
observe.unsubscribe();
|
|
99
|
-
}, error => {
|
|
100
|
-
observe.error(error);
|
|
101
|
-
observe.unsubscribe();
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
this.upload = (method, url, formData, progress) => {
|
|
106
|
-
let req = new HttpRequest(method, url, formData, { reportProgress: true });
|
|
107
|
-
return new Observable(observe => {
|
|
108
|
-
this.httpClient.request(req).subscribe((event) => {
|
|
109
|
-
if (event.type === HttpEventType.UploadProgress) {
|
|
110
|
-
if (typeof progress == 'function') {
|
|
111
|
-
event['progress'] = parseInt(event.loaded / event.total * 100 + '');
|
|
112
|
-
progress(event);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (event.type === HttpEventType.Response) {
|
|
116
|
-
observe.next(event.body);
|
|
117
|
-
}
|
|
118
|
-
}, error => {
|
|
119
|
-
observe.error(error);
|
|
120
|
-
observe.unsubscribe();
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
this.transformString = (objItem) => {
|
|
125
|
-
var list = [];
|
|
126
|
-
for (const key in objItem) {
|
|
127
|
-
var str = '';
|
|
128
|
-
let item = objItem[key];
|
|
129
|
-
if (item instanceof Array) {
|
|
130
|
-
//数组
|
|
131
|
-
var arr = [];
|
|
132
|
-
item.forEach((v, k) => {
|
|
133
|
-
var s = encodeURIComponent(key) + '[' + k + ']';
|
|
134
|
-
arr.push(this.parseObj(v, s));
|
|
135
|
-
});
|
|
136
|
-
str = arr.join('&');
|
|
137
|
-
}
|
|
138
|
-
else if (item instanceof Object) {
|
|
139
|
-
//json
|
|
140
|
-
var arr = [];
|
|
141
|
-
for (const k in item) {
|
|
142
|
-
let v = item[k];
|
|
143
|
-
var s = encodeURIComponent(key) + '.' + encodeURIComponent(k);
|
|
144
|
-
arr.push(this.parseObj(v, s));
|
|
145
|
-
}
|
|
146
|
-
str = arr.join('&');
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
//普通类型
|
|
150
|
-
str = encodeURIComponent(key) + '=' + encodeURIComponent(item);
|
|
151
|
-
}
|
|
152
|
-
list.push(str);
|
|
153
|
-
}
|
|
154
|
-
return list.join('&');
|
|
155
|
-
};
|
|
156
|
-
this.parseObj = (obj, str) => {
|
|
157
|
-
if (obj instanceof Array) {
|
|
158
|
-
//数组
|
|
159
|
-
var arr = [];
|
|
160
|
-
obj.forEach((v, k) => {
|
|
161
|
-
var s = str + '[' + k + ']' + '=' + encodeURIComponent(v);
|
|
162
|
-
arr.push(this.parseObj(v, s));
|
|
163
|
-
});
|
|
164
|
-
str = arr.join('&');
|
|
165
|
-
}
|
|
166
|
-
else if (obj instanceof Object) {
|
|
167
|
-
//json
|
|
168
|
-
var arr = [];
|
|
169
|
-
for (const k in obj) {
|
|
170
|
-
let v = obj[k];
|
|
171
|
-
var s = str + '.' + encodeURIComponent(k);
|
|
172
|
-
arr.push(this.parseObj(v, s));
|
|
173
|
-
}
|
|
174
|
-
str = arr.join('&');
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
//普通类型
|
|
178
|
-
str = str + '=' + encodeURIComponent(obj);
|
|
179
|
-
}
|
|
180
|
-
return str;
|
|
181
|
-
};
|
|
182
|
-
this.getOss = (url, params, responseType, noError = false) => {
|
|
183
|
-
return new Observable(observe => {
|
|
184
|
-
if (url == undefined) {
|
|
185
|
-
observe.next();
|
|
186
|
-
observe.unsubscribe();
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
console.log("url", url);
|
|
190
|
-
if (!url.startsWith("http")) {
|
|
191
|
-
url = atr_static_datas.OSS_URL + url;
|
|
192
|
-
}
|
|
193
|
-
let _headers = new HttpHeaders();
|
|
194
|
-
let withCredentials = false;
|
|
195
|
-
// //console.log(_headers)
|
|
196
|
-
if (url.endsWith(".o") && !params) {
|
|
197
|
-
url += "?v=" + new Date().getTime();
|
|
198
|
-
}
|
|
199
|
-
if (noError) {
|
|
200
|
-
if (url.indexOf('?') > 0) {
|
|
201
|
-
url += "&noError";
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
url += "?noError";
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
this.httpClient.get(url, {
|
|
208
|
-
headers: _headers,
|
|
209
|
-
params: params,
|
|
210
|
-
withCredentials: withCredentials,
|
|
211
|
-
responseType: responseType || 'text'
|
|
212
|
-
}).subscribe(result => {
|
|
213
|
-
observe.next(result);
|
|
214
|
-
observe.unsubscribe();
|
|
215
|
-
}, error => {
|
|
216
|
-
observe.error(error);
|
|
217
|
-
observe.unsubscribe();
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
getNormalHeader(_headers) {
|
|
223
|
-
if (!atr_static_datas.needNormalHeade) {
|
|
224
|
-
return _headers;
|
|
225
|
-
}
|
|
226
|
-
return atr_static_datas.getNormalHeader(_headers);
|
|
227
|
-
}
|
|
228
|
-
postPromAll(urls, options, headers, noTip = false) {
|
|
229
|
-
let param = [];
|
|
230
|
-
urls.forEach(item => {
|
|
231
|
-
param.push(this.postProm(item.url, item.params, options, headers, noTip = false));
|
|
232
|
-
});
|
|
233
|
-
return Promise.all(param);
|
|
234
|
-
}
|
|
235
|
-
getOssPre() {
|
|
236
|
-
return new Observable(observe => {
|
|
237
|
-
if (!atr_static_datas.OSS_GETHOST) {
|
|
238
|
-
observe.error();
|
|
239
|
-
observe.unsubscribe();
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
this.post(atr_static_datas.OSS_GETHOST, {}, ToolsUtil.getHttpOptions()).subscribe(res => {
|
|
243
|
-
atr_static_datas.OSS_URL = res.data;
|
|
244
|
-
ToolsUtil.ossPrefix = res.data;
|
|
245
|
-
observe.next();
|
|
246
|
-
observe.unsubscribe();
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
postProm(url, params, options, headers, noTip = false) {
|
|
251
|
-
// //console.log("aaa");
|
|
252
|
-
let _headers = new HttpHeaders();
|
|
253
|
-
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
254
|
-
_headers = this.getDefaultHeader(_headers);
|
|
255
|
-
}
|
|
256
|
-
_headers = this.getNormalHeader(_headers);
|
|
257
|
-
if (headers) {
|
|
258
|
-
_headers = headers;
|
|
259
|
-
}
|
|
260
|
-
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
261
|
-
let withCredentials = true;
|
|
262
|
-
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
263
|
-
withCredentials = options.isWithCredentials;
|
|
264
|
-
}
|
|
265
|
-
let postParams = {};
|
|
266
|
-
for (const key of Object.keys(params)) {
|
|
267
|
-
if (params[key] !== null && params[key] !== '' && params[key] !== undefined) {
|
|
268
|
-
if (params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
269
|
-
postParams[key] = JSON.stringify(params[key]);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
postParams[key] = params[key];
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return this.httpClient.post(url, null, {
|
|
277
|
-
headers: _headers,
|
|
278
|
-
params: postParams,
|
|
279
|
-
withCredentials: withCredentials
|
|
280
|
-
})
|
|
281
|
-
.toPromise();
|
|
282
|
-
}
|
|
283
|
-
getDefaultHeader(_headers) {
|
|
284
|
-
return atr_static_datas.getDefaultHeader(_headers);
|
|
285
|
-
}
|
|
286
|
-
downloadXls(url, params) {
|
|
287
|
-
this.post("third/auth/getAuthToken", {}, ToolsUtil.getHttpOptions()).subscribe(result => {
|
|
288
|
-
let thridParma = {
|
|
289
|
-
"reqMethod": "auth",
|
|
290
|
-
"sign": result.data,
|
|
291
|
-
"x-header-atr": "web",
|
|
292
|
-
token: LocalStorageUtil.getUserToken(),
|
|
293
|
-
userId: LocalStorageUtil.getUserId()
|
|
294
|
-
};
|
|
295
|
-
params = Object.assign(params, thridParma);
|
|
296
|
-
ToolsUtil.downloadXls(atr_static_datas.SERVER_URL + url, params);
|
|
297
|
-
}, error => {
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
304
|
-
type: Injectable
|
|
305
|
-
}], ctorParameters:
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRzVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBSTdDLE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVdoQzs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQVksRUFBRSxPQUFxQixFQUFFLE9BQXFCLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBbUIsRUFBRTtZQUVqSCxPQUFPLElBQUksVUFBVSxDQUFNLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQyxzQkFBc0I7Z0JBQ3RCLElBQUksUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRTtvQkFDM0QsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFDLElBQUksT0FBTyxFQUFFO29CQUNY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YUFDRjtTQUVGO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLGVBQWUsRUFBRSxlQUFlO1NBQ2pDLENBQUM7YUFDQyxTQUFTLEVBQUUsQ0FBQztJQUVqQixDQUFDO0lBbUNELGdCQUFnQixDQUFDLFFBQXFCO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQXFKRCxXQUFXLENBQUMsR0FBVyxFQUFFLE1BQVc7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUM1RSxNQUFNLENBQUMsRUFBRTtZQUNQLElBQUksVUFBVSxHQUFHO2dCQUNmLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ25CLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO2FBQ3JDLENBQUE7WUFDRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDM0MsU0FBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtRQUNSLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs7eUdBalVVLFdBQVc7NkdBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUmVxdWVzdCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEh0dHBPcHRpb25zfSBmcm9tICcuLi9iYXNlL2F0ci1jb21tb24nO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gJy4uL3V0aWxzL2xvY2Fsc3RvcmFnZS51dGlsJztcclxuaW1wb3J0IHtNZDV9IGZyb20gXCJ0cy1tZDVcIjtcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZS9lbnZpcm9ubWVudHNcIjtcclxuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi91dGlscy9Ub29sc1V0aWxcIjtcclxuaW1wb3J0IHtVcGxvYWRPc3NTZXJ2aWNlfSBmcm9tICcuL3VwbG9hZC1vc3Muc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBnZXROb3JtYWxIZWFkZXIoX2hlYWRlcnM6IEh0dHBIZWFkZXJzKTogSHR0cEhlYWRlcnMge1xyXG4gICAgaWYgKCFhdHJfc3RhdGljX2RhdGFzLm5lZWROb3JtYWxIZWFkZSkge1xyXG4gICAgICByZXR1cm4gX2hlYWRlcnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXRyX3N0YXRpY19kYXRhcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSB1cmxcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICovXHJcbiAgcG9zdCA9ICh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgbm9UaXAgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWFhXCIpO1xyXG4gICAgICBsZXQgX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNDb21tb25IdHRwSGVhZGVyJykpIHtcclxuICAgICAgICBfaGVhZGVycyA9IHRoaXMuZ2V0RGVmYXVsdEhlYWRlcihfaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldE5vcm1hbEhlYWRlcihfaGVhZGVycyk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwibm9UaXBcIiwgbm9UaXAgPyBcIjFcIiA6IFwiMFwiKTtcclxuICAgICAgbGV0IHdpdGhDcmVkZW50aWFsczogYW55ID0gdHJ1ZVxyXG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KCdpc1dpdGhDcmVkZW50aWFscycpKSB7XHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzID0gb3B0aW9ucy5pc1dpdGhDcmVkZW50aWFsc1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKF9oZWFkZXJzKTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB0eXBlb2YgcGFyYW1zW2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBwYXJhbXNba2V5XSA9IEpTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgbnVsbCwge2hlYWRlcnM6IF9oZWFkZXJzLCBwYXJhbXM6IHBhcmFtcywgd2l0aENyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHN9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHBvc3RQcm9tQWxsKHVybHM6IHsgdXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCB9W10sIG9wdGlvbnM/OiBIdHRwT3B0aW9ucywgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBub1RpcCA9IGZhbHNlKSB7XHJcbiAgICBsZXQgcGFyYW06IGFueVtdID0gW107XHJcbiAgICB1cmxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHBhcmFtLnB1c2godGhpcy5wb3N0UHJvbShpdGVtLnVybCwgaXRlbS5wYXJhbXMsIG9wdGlvbnMsIGhlYWRlcnMsIG5vVGlwID0gZmFsc2UpKTtcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLmFsbChwYXJhbSlcclxuICB9XHJcblxyXG5cclxuICBnZXRPc3NQcmUoKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgaWYgKCFhdHJfc3RhdGljX2RhdGFzLk9TU19HRVRIT1NUKSB7XHJcbiAgICAgICAgb2JzZXJ2ZS5lcnJvcigpO1xyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zdChhdHJfc3RhdGljX2RhdGFzLk9TU19HRVRIT1NULCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMID0gcmVzLmRhdGFcclxuICAgICAgICAgIFRvb2xzVXRpbC5vc3NQcmVmaXggPSByZXMuZGF0YVxyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KCk7XHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwb3N0UHJvbSh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgbm9UaXAgPSBmYWxzZSkge1xyXG5cclxuICAgIC8vIC8vY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICBsZXQgX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXREZWZhdWx0SGVhZGVyKF9oZWFkZXJzKTtcclxuICAgIH1cclxuICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgX2hlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgfVxyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJub1RpcFwiLCBub1RpcCA/IFwiMVwiIDogXCIwXCIpO1xyXG4gICAgbGV0IHdpdGhDcmVkZW50aWFsczogYW55ID0gdHJ1ZVxyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNXaXRoQ3JlZGVudGlhbHMnKSkge1xyXG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSBvcHRpb25zLmlzV2l0aENyZWRlbnRpYWxzXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zdFBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICBpZiAocGFyYW1zW2tleV0gIT09IG51bGwgJiYgcGFyYW1zW2tleV0gIT09ICcnICYmIHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHBhcmFtc1trZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgcG9zdFBhcmFtc1trZXldID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvc3RQYXJhbXNba2V5XSA9IHBhcmFtc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBudWxsLCB7XHJcbiAgICAgIGhlYWRlcnM6IF9oZWFkZXJzLFxyXG4gICAgICBwYXJhbXM6IHBvc3RQYXJhbXMsXHJcbiAgICAgIHdpdGhDcmVkZW50aWFsczogd2l0aENyZWRlbnRpYWxzXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcG9zdEJvZHkgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IEh0dHBPcHRpb25zLCBoZWFkZXJzPzoge30sIG5vVGlwID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImFhYVwiKTtcclxuICAgICAgbGV0IF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm5vVGlwXCIsIG5vVGlwID8gXCIxXCIgOiBcIjBcIik7XHJcbiAgICAgIGxldCB3aXRoQ3JlZGVudGlhbHM6IGFueSA9IHRydWVcclxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNXaXRoQ3JlZGVudGlhbHMnKSkge1xyXG4gICAgICAgIHdpdGhDcmVkZW50aWFscyA9IG9wdGlvbnMuaXNXaXRoQ3JlZGVudGlhbHNcclxuICAgICAgfVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhfaGVhZGVycyk7XHJcbiAgICAgIC8qZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICAgICAgaWYocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHBhcmFtc1trZXldICA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9Ki9cclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgcGFyYW1zLCB7aGVhZGVyczogX2hlYWRlcnMsIHBhcmFtczoge30sIHdpdGhDcmVkZW50aWFsczogd2l0aENyZWRlbnRpYWxzfSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQocmVzdWx0KTtcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIG9ic2VydmUuZXJyb3IoZXJyb3IpXHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0SGVhZGVyKF9oZWFkZXJzOiBIdHRwSGVhZGVycyk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBhdHJfc3RhdGljX2RhdGFzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpXHJcbiAgfVxyXG5cclxuICBnZXQgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIG5vVGlwID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG5cclxuICAgICAgbGV0IF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm5vVGlwXCIsIG5vVGlwID8gXCIxXCIgOiBcIjBcIik7XHJcbiAgICAgIGxldCB3aXRoQ3JlZGVudGlhbHM6IGFueSA9IGZhbHNlXHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzV2l0aENyZWRlbnRpYWxzJykpIHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSBvcHRpb25zLmlzV2l0aENyZWRlbnRpYWxzXHJcbiAgICAgIH1cclxuICAgICAgLy8gY29uc29sZS5sb2cob3B0aW9ucylcclxuICAgICAgLy8gY29uc29sZS5sb2coX2hlYWRlcnMpXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XHJcbiAgICAgICAgaGVhZGVyczogX2hlYWRlcnMsXHJcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHNcclxuICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5uZXh0KHJlc3VsdCk7XHJcbiAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSAobWV0aG9kOiBhbnksIHVybDogYW55LCBmb3JtRGF0YTogRm9ybURhdGEsIHByb2dyZXNzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgbGV0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdChtZXRob2QsIHVybCwgZm9ybURhdGEsIHtyZXBvcnRQcm9ncmVzczogdHJ1ZX0pXHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcHJvZ3Jlc3MgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBldmVudFsncHJvZ3Jlc3MnXSA9IHBhcnNlSW50KGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsICogMTAwICsgJycpXHJcbiAgICAgICAgICAgIHByb2dyZXNzKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChldmVudC5ib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtU3RyaW5nID0gKG9iakl0ZW06IGFueSkgPT4ge1xyXG4gICAgdmFyIGxpc3Q6IGFueSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqSXRlbSkge1xyXG4gICAgICB2YXIgc3RyID0gJyc7XHJcbiAgICAgIGxldCBpdGVtID0gb2JqSXRlbVtrZXldXHJcbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAvL+aVsOe7hFxyXG4gICAgICAgIHZhciBhcnI6IGFueSA9IFtdO1xyXG4gICAgICAgIGl0ZW0uZm9yRWFjaCgodiwgaykgPT4ge1xyXG4gICAgICAgICAgdmFyIHMgPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICdbJyArIGsgKyAnXSc7XHJcbiAgICAgICAgICBhcnIucHVzaCh0aGlzLnBhcnNlT2JqKHYsIHMpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgIC8vanNvblxyXG4gICAgICAgIHZhciBhcnI6IGFueSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgayBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW1ba11cclxuICAgICAgICAgIHZhciBzID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnLicgKyBlbmNvZGVVUklDb21wb25lbnQoayk7XHJcbiAgICAgICAgICBhcnIucHVzaCh0aGlzLnBhcnNlT2JqKHYsIHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RyID0gYXJyLmpvaW4oJyYnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL+aZrumAmuexu+Wei1xyXG4gICAgICAgIHN0ciA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGxpc3QucHVzaChzdHIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Quam9pbignJicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9iaiA9IChvYmo6IGFueSwgc3RyOiBhbnkpID0+IHtcclxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAvL+aVsOe7hFxyXG4gICAgICB2YXIgYXJyOiBhbnkgPSBbXTtcclxuICAgICAgb2JqLmZvckVhY2goKHYsIGspID0+IHtcclxuICAgICAgICB2YXIgcyA9IHN0ciArICdbJyArIGsgKyAnXScgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodik7XHJcbiAgICAgICAgYXJyLnB1c2godGhpcy5wYXJzZU9iaih2LCBzKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAvL2pzb25cclxuICAgICAgdmFyIGFycjogYW55ID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgayBpbiBvYmopIHtcclxuICAgICAgICBsZXQgdiA9IG9ialtrXVxyXG4gICAgICAgIHZhciBzID0gc3RyICsgJy4nICsgZW5jb2RlVVJJQ29tcG9uZW50KGspO1xyXG4gICAgICAgIGFyci5wdXNoKHRoaXMucGFyc2VPYmoodiwgcykpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL+aZrumAmuexu+Wei1xyXG4gICAgICBzdHIgPSBzdHIgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQob2JqKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICBnZXRPc3MgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCByZXNwb25zZVR5cGU/OiBhbnksIG5vRXJyb3IgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgaWYgKHVybCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBvYnNlcnZlLm5leHQoKTtcclxuICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhcInVybFwiLCB1cmwpXHJcbiAgICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgICAgdXJsID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsgdXJsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICBsZXQgd2l0aENyZWRlbnRpYWxzID0gZmFsc2VcclxuICAgICAgLy8gLy9jb25zb2xlLmxvZyhfaGVhZGVycylcclxuICAgICAgaWYgKHVybC5lbmRzV2l0aChcIi5vXCIpICYmICFwYXJhbXMpIHtcclxuICAgICAgICB1cmwgKz0gXCI/dj1cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub0Vycm9yKSB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPiAwKSB7XHJcbiAgICAgICAgICB1cmwgKz0gXCImbm9FcnJvclwiXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCArPSBcIj9ub0Vycm9yXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcclxuICAgICAgICBoZWFkZXJzOiBfaGVhZGVycyxcclxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHdpdGhDcmVkZW50aWFscyxcclxuICAgICAgICByZXNwb25zZVR5cGU6IHJlc3BvbnNlVHlwZSB8fCAndGV4dCdcclxuICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5uZXh0KHJlc3VsdCk7XHJcbiAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFhscyh1cmw6IHN0cmluZywgcGFyYW1zPzoge30pIHtcclxuICAgIHRoaXMucG9zdChcInRoaXJkL2F1dGgvZ2V0QXV0aFRva2VuXCIsIHt9LCBUb29sc1V0aWwuZ2V0SHR0cE9wdGlvbnMoKSkuc3Vic2NyaWJlKFxyXG4gICAgICByZXN1bHQgPT4ge1xyXG4gICAgICAgIGxldCB0aHJpZFBhcm1hID0ge1xyXG4gICAgICAgICAgXCJyZXFNZXRob2RcIjogXCJhdXRoXCIsXHJcbiAgICAgICAgICBcInNpZ25cIjogcmVzdWx0LmRhdGEsXHJcbiAgICAgICAgICBcIngtaGVhZGVyLWF0clwiOiBcIndlYlwiLFxyXG4gICAgICAgICAgdG9rZW46IExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlclRva2VuKCksXHJcbiAgICAgICAgICB1c2VySWQ6IExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlcklkKClcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRocmlkUGFybWEpO1xyXG4gICAgICAgIFRvb2xzVXRpbC5kb3dubG9hZFhscyhhdHJfc3RhdGljX2RhdGFzLlNFUlZFUl9VUkwgKyB1cmwsIHBhcmFtcyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgfSlcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpRequest, HttpEventType, HttpHeaders } from "@angular/common/http";
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { atr_static_datas } from '../base/atr-common';
|
|
5
|
+
import { LocalStorageUtil } from '../utils/localstorage.util';
|
|
6
|
+
import { ToolsUtil } from "../utils/ToolsUtil";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
export class HttpService {
|
|
10
|
+
constructor(httpClient) {
|
|
11
|
+
this.httpClient = httpClient;
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param url
|
|
15
|
+
* @param params
|
|
16
|
+
*/
|
|
17
|
+
this.post = (url, params, options, headers, noTip = false) => {
|
|
18
|
+
return new Observable(observe => {
|
|
19
|
+
// console.log("aaa");
|
|
20
|
+
let _headers = new HttpHeaders();
|
|
21
|
+
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
22
|
+
_headers = this.getDefaultHeader(_headers);
|
|
23
|
+
}
|
|
24
|
+
_headers = this.getNormalHeader(_headers);
|
|
25
|
+
if (headers) {
|
|
26
|
+
_headers = headers;
|
|
27
|
+
}
|
|
28
|
+
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
29
|
+
let withCredentials = true;
|
|
30
|
+
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
31
|
+
withCredentials = options.isWithCredentials;
|
|
32
|
+
}
|
|
33
|
+
// console.log(_headers);
|
|
34
|
+
for (const key of Object.keys(params)) {
|
|
35
|
+
if (params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
36
|
+
params[key] = JSON.stringify(params[key]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.httpClient.post(url, null, { headers: _headers, params: params, withCredentials: withCredentials })
|
|
40
|
+
.subscribe(result => {
|
|
41
|
+
observe.next(result);
|
|
42
|
+
observe.unsubscribe();
|
|
43
|
+
}, error => {
|
|
44
|
+
observe.error(error);
|
|
45
|
+
observe.unsubscribe();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
this.postBody = (url, params, options, headers, noTip = false) => {
|
|
50
|
+
return new Observable(observe => {
|
|
51
|
+
// console.log("aaa");
|
|
52
|
+
let _headers = new HttpHeaders();
|
|
53
|
+
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
54
|
+
_headers = this.getDefaultHeader(_headers);
|
|
55
|
+
}
|
|
56
|
+
_headers = this.getNormalHeader(_headers);
|
|
57
|
+
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
58
|
+
let withCredentials = true;
|
|
59
|
+
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
60
|
+
withCredentials = options.isWithCredentials;
|
|
61
|
+
}
|
|
62
|
+
// console.log(_headers);
|
|
63
|
+
/*for(const key of Object.keys(params)) {
|
|
64
|
+
if(params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
65
|
+
params[key] = JSON.stringify(params[key])
|
|
66
|
+
}
|
|
67
|
+
}*/
|
|
68
|
+
this.httpClient.post(url, params, { headers: _headers, params: {}, withCredentials: withCredentials })
|
|
69
|
+
.subscribe(result => {
|
|
70
|
+
observe.next(result);
|
|
71
|
+
observe.unsubscribe();
|
|
72
|
+
}, error => {
|
|
73
|
+
observe.error(error);
|
|
74
|
+
observe.unsubscribe();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
this.get = (url, params, options, noTip = false) => {
|
|
79
|
+
return new Observable(observe => {
|
|
80
|
+
let _headers = new HttpHeaders();
|
|
81
|
+
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
82
|
+
_headers = this.getDefaultHeader(_headers);
|
|
83
|
+
}
|
|
84
|
+
_headers = this.getNormalHeader(_headers);
|
|
85
|
+
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
86
|
+
let withCredentials = false;
|
|
87
|
+
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
88
|
+
withCredentials = options.isWithCredentials;
|
|
89
|
+
}
|
|
90
|
+
// console.log(options)
|
|
91
|
+
// console.log(_headers)
|
|
92
|
+
this.httpClient.get(url, {
|
|
93
|
+
headers: _headers,
|
|
94
|
+
params: params,
|
|
95
|
+
withCredentials: withCredentials
|
|
96
|
+
}).subscribe(result => {
|
|
97
|
+
observe.next(result);
|
|
98
|
+
observe.unsubscribe();
|
|
99
|
+
}, error => {
|
|
100
|
+
observe.error(error);
|
|
101
|
+
observe.unsubscribe();
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
this.upload = (method, url, formData, progress) => {
|
|
106
|
+
let req = new HttpRequest(method, url, formData, { reportProgress: true });
|
|
107
|
+
return new Observable(observe => {
|
|
108
|
+
this.httpClient.request(req).subscribe((event) => {
|
|
109
|
+
if (event.type === HttpEventType.UploadProgress) {
|
|
110
|
+
if (typeof progress == 'function') {
|
|
111
|
+
event['progress'] = parseInt(event.loaded / event.total * 100 + '');
|
|
112
|
+
progress(event);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (event.type === HttpEventType.Response) {
|
|
116
|
+
observe.next(event.body);
|
|
117
|
+
}
|
|
118
|
+
}, error => {
|
|
119
|
+
observe.error(error);
|
|
120
|
+
observe.unsubscribe();
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
this.transformString = (objItem) => {
|
|
125
|
+
var list = [];
|
|
126
|
+
for (const key in objItem) {
|
|
127
|
+
var str = '';
|
|
128
|
+
let item = objItem[key];
|
|
129
|
+
if (item instanceof Array) {
|
|
130
|
+
//数组
|
|
131
|
+
var arr = [];
|
|
132
|
+
item.forEach((v, k) => {
|
|
133
|
+
var s = encodeURIComponent(key) + '[' + k + ']';
|
|
134
|
+
arr.push(this.parseObj(v, s));
|
|
135
|
+
});
|
|
136
|
+
str = arr.join('&');
|
|
137
|
+
}
|
|
138
|
+
else if (item instanceof Object) {
|
|
139
|
+
//json
|
|
140
|
+
var arr = [];
|
|
141
|
+
for (const k in item) {
|
|
142
|
+
let v = item[k];
|
|
143
|
+
var s = encodeURIComponent(key) + '.' + encodeURIComponent(k);
|
|
144
|
+
arr.push(this.parseObj(v, s));
|
|
145
|
+
}
|
|
146
|
+
str = arr.join('&');
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
//普通类型
|
|
150
|
+
str = encodeURIComponent(key) + '=' + encodeURIComponent(item);
|
|
151
|
+
}
|
|
152
|
+
list.push(str);
|
|
153
|
+
}
|
|
154
|
+
return list.join('&');
|
|
155
|
+
};
|
|
156
|
+
this.parseObj = (obj, str) => {
|
|
157
|
+
if (obj instanceof Array) {
|
|
158
|
+
//数组
|
|
159
|
+
var arr = [];
|
|
160
|
+
obj.forEach((v, k) => {
|
|
161
|
+
var s = str + '[' + k + ']' + '=' + encodeURIComponent(v);
|
|
162
|
+
arr.push(this.parseObj(v, s));
|
|
163
|
+
});
|
|
164
|
+
str = arr.join('&');
|
|
165
|
+
}
|
|
166
|
+
else if (obj instanceof Object) {
|
|
167
|
+
//json
|
|
168
|
+
var arr = [];
|
|
169
|
+
for (const k in obj) {
|
|
170
|
+
let v = obj[k];
|
|
171
|
+
var s = str + '.' + encodeURIComponent(k);
|
|
172
|
+
arr.push(this.parseObj(v, s));
|
|
173
|
+
}
|
|
174
|
+
str = arr.join('&');
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
//普通类型
|
|
178
|
+
str = str + '=' + encodeURIComponent(obj);
|
|
179
|
+
}
|
|
180
|
+
return str;
|
|
181
|
+
};
|
|
182
|
+
this.getOss = (url, params, responseType, noError = false) => {
|
|
183
|
+
return new Observable(observe => {
|
|
184
|
+
if (url == undefined) {
|
|
185
|
+
observe.next();
|
|
186
|
+
observe.unsubscribe();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
console.log("url", url);
|
|
190
|
+
if (!url.startsWith("http")) {
|
|
191
|
+
url = atr_static_datas.OSS_URL + url;
|
|
192
|
+
}
|
|
193
|
+
let _headers = new HttpHeaders();
|
|
194
|
+
let withCredentials = false;
|
|
195
|
+
// //console.log(_headers)
|
|
196
|
+
if (url.endsWith(".o") && !params) {
|
|
197
|
+
url += "?v=" + new Date().getTime();
|
|
198
|
+
}
|
|
199
|
+
if (noError) {
|
|
200
|
+
if (url.indexOf('?') > 0) {
|
|
201
|
+
url += "&noError";
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
url += "?noError";
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
this.httpClient.get(url, {
|
|
208
|
+
headers: _headers,
|
|
209
|
+
params: params,
|
|
210
|
+
withCredentials: withCredentials,
|
|
211
|
+
responseType: responseType || 'text'
|
|
212
|
+
}).subscribe(result => {
|
|
213
|
+
observe.next(result);
|
|
214
|
+
observe.unsubscribe();
|
|
215
|
+
}, error => {
|
|
216
|
+
observe.error(error);
|
|
217
|
+
observe.unsubscribe();
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
getNormalHeader(_headers) {
|
|
223
|
+
if (!atr_static_datas.needNormalHeade) {
|
|
224
|
+
return _headers;
|
|
225
|
+
}
|
|
226
|
+
return atr_static_datas.getNormalHeader(_headers);
|
|
227
|
+
}
|
|
228
|
+
postPromAll(urls, options, headers, noTip = false) {
|
|
229
|
+
let param = [];
|
|
230
|
+
urls.forEach(item => {
|
|
231
|
+
param.push(this.postProm(item.url, item.params, options, headers, noTip = false));
|
|
232
|
+
});
|
|
233
|
+
return Promise.all(param);
|
|
234
|
+
}
|
|
235
|
+
getOssPre() {
|
|
236
|
+
return new Observable(observe => {
|
|
237
|
+
if (!atr_static_datas.OSS_GETHOST) {
|
|
238
|
+
observe.error();
|
|
239
|
+
observe.unsubscribe();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
this.post(atr_static_datas.OSS_GETHOST, {}, ToolsUtil.getHttpOptions()).subscribe(res => {
|
|
243
|
+
atr_static_datas.OSS_URL = res.data;
|
|
244
|
+
ToolsUtil.ossPrefix = res.data;
|
|
245
|
+
observe.next();
|
|
246
|
+
observe.unsubscribe();
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
postProm(url, params, options, headers, noTip = false) {
|
|
251
|
+
// //console.log("aaa");
|
|
252
|
+
let _headers = new HttpHeaders();
|
|
253
|
+
if (options && options.hasOwnProperty('isCommonHttpHeader')) {
|
|
254
|
+
_headers = this.getDefaultHeader(_headers);
|
|
255
|
+
}
|
|
256
|
+
_headers = this.getNormalHeader(_headers);
|
|
257
|
+
if (headers) {
|
|
258
|
+
_headers = headers;
|
|
259
|
+
}
|
|
260
|
+
_headers = _headers.set("noTip", noTip ? "1" : "0");
|
|
261
|
+
let withCredentials = true;
|
|
262
|
+
if (options && options.hasOwnProperty('isWithCredentials')) {
|
|
263
|
+
withCredentials = options.isWithCredentials;
|
|
264
|
+
}
|
|
265
|
+
let postParams = {};
|
|
266
|
+
for (const key of Object.keys(params)) {
|
|
267
|
+
if (params[key] !== null && params[key] !== '' && params[key] !== undefined) {
|
|
268
|
+
if (params.hasOwnProperty(key) && typeof params[key] === 'object') {
|
|
269
|
+
postParams[key] = JSON.stringify(params[key]);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
postParams[key] = params[key];
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return this.httpClient.post(url, null, {
|
|
277
|
+
headers: _headers,
|
|
278
|
+
params: postParams,
|
|
279
|
+
withCredentials: withCredentials
|
|
280
|
+
})
|
|
281
|
+
.toPromise();
|
|
282
|
+
}
|
|
283
|
+
getDefaultHeader(_headers) {
|
|
284
|
+
return atr_static_datas.getDefaultHeader(_headers);
|
|
285
|
+
}
|
|
286
|
+
downloadXls(url, params) {
|
|
287
|
+
this.post("third/auth/getAuthToken", {}, ToolsUtil.getHttpOptions()).subscribe(result => {
|
|
288
|
+
let thridParma = {
|
|
289
|
+
"reqMethod": "auth",
|
|
290
|
+
"sign": result.data,
|
|
291
|
+
"x-header-atr": "web",
|
|
292
|
+
token: LocalStorageUtil.getUserToken(),
|
|
293
|
+
userId: LocalStorageUtil.getUserId()
|
|
294
|
+
};
|
|
295
|
+
params = Object.assign(params, thridParma);
|
|
296
|
+
ToolsUtil.downloadXls(atr_static_datas.SERVER_URL + url, params);
|
|
297
|
+
}, error => {
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
301
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HttpService }); }
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HttpService, decorators: [{
|
|
304
|
+
type: Injectable
|
|
305
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRzVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBSTdDLE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVdoQzs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQVksRUFBRSxPQUFxQixFQUFFLE9BQXFCLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBbUIsRUFBRTtZQUVqSCxPQUFPLElBQUksVUFBVSxDQUFNLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQyxzQkFBc0I7Z0JBQ3RCLElBQUksUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRTtvQkFDM0QsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFDLElBQUksT0FBTyxFQUFFO29CQUNY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YUFDRjtTQUVGO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLGVBQWUsRUFBRSxlQUFlO1NBQ2pDLENBQUM7YUFDQyxTQUFTLEVBQUUsQ0FBQztJQUVqQixDQUFDO0lBbUNELGdCQUFnQixDQUFDLFFBQXFCO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQXFKRCxXQUFXLENBQUMsR0FBVyxFQUFFLE1BQVk7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUM1RSxNQUFNLENBQUMsRUFBRTtZQUNQLElBQUksVUFBVSxHQUFHO2dCQUNmLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ25CLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO2FBQ3JDLENBQUE7WUFDRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDM0MsU0FBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtRQUNSLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs4R0FqVVUsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUmVxdWVzdCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEh0dHBPcHRpb25zfSBmcm9tICcuLi9iYXNlL2F0ci1jb21tb24nO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gJy4uL3V0aWxzL2xvY2Fsc3RvcmFnZS51dGlsJztcclxuaW1wb3J0IHtNZDV9IGZyb20gXCJ0cy1tZDVcIjtcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZS9lbnZpcm9ubWVudHNcIjtcclxuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi91dGlscy9Ub29sc1V0aWxcIjtcclxuaW1wb3J0IHtVcGxvYWRPc3NTZXJ2aWNlfSBmcm9tICcuL3VwbG9hZC1vc3Muc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBnZXROb3JtYWxIZWFkZXIoX2hlYWRlcnM6IEh0dHBIZWFkZXJzKTogSHR0cEhlYWRlcnMge1xyXG4gICAgaWYgKCFhdHJfc3RhdGljX2RhdGFzLm5lZWROb3JtYWxIZWFkZSkge1xyXG4gICAgICByZXR1cm4gX2hlYWRlcnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXRyX3N0YXRpY19kYXRhcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSB1cmxcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICovXHJcbiAgcG9zdCA9ICh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgbm9UaXAgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWFhXCIpO1xyXG4gICAgICBsZXQgX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNDb21tb25IdHRwSGVhZGVyJykpIHtcclxuICAgICAgICBfaGVhZGVycyA9IHRoaXMuZ2V0RGVmYXVsdEhlYWRlcihfaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldE5vcm1hbEhlYWRlcihfaGVhZGVycyk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwibm9UaXBcIiwgbm9UaXAgPyBcIjFcIiA6IFwiMFwiKTtcclxuICAgICAgbGV0IHdpdGhDcmVkZW50aWFsczogYW55ID0gdHJ1ZVxyXG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KCdpc1dpdGhDcmVkZW50aWFscycpKSB7XHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzID0gb3B0aW9ucy5pc1dpdGhDcmVkZW50aWFsc1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKF9oZWFkZXJzKTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB0eXBlb2YgcGFyYW1zW2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBwYXJhbXNba2V5XSA9IEpTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgbnVsbCwge2hlYWRlcnM6IF9oZWFkZXJzLCBwYXJhbXM6IHBhcmFtcywgd2l0aENyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHN9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHBvc3RQcm9tQWxsKHVybHM6IHsgdXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCB9W10sIG9wdGlvbnM/OiBIdHRwT3B0aW9ucywgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBub1RpcCA9IGZhbHNlKSB7XHJcbiAgICBsZXQgcGFyYW06IGFueVtdID0gW107XHJcbiAgICB1cmxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHBhcmFtLnB1c2godGhpcy5wb3N0UHJvbShpdGVtLnVybCwgaXRlbS5wYXJhbXMsIG9wdGlvbnMsIGhlYWRlcnMsIG5vVGlwID0gZmFsc2UpKTtcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLmFsbChwYXJhbSlcclxuICB9XHJcblxyXG5cclxuICBnZXRPc3NQcmUoKSB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgaWYgKCFhdHJfc3RhdGljX2RhdGFzLk9TU19HRVRIT1NUKSB7XHJcbiAgICAgICAgb2JzZXJ2ZS5lcnJvcigpO1xyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zdChhdHJfc3RhdGljX2RhdGFzLk9TU19HRVRIT1NULCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMID0gcmVzLmRhdGFcclxuICAgICAgICAgIFRvb2xzVXRpbC5vc3NQcmVmaXggPSByZXMuZGF0YVxyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KCk7XHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwb3N0UHJvbSh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgbm9UaXAgPSBmYWxzZSkge1xyXG5cclxuICAgIC8vIC8vY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICBsZXQgX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXREZWZhdWx0SGVhZGVyKF9oZWFkZXJzKTtcclxuICAgIH1cclxuICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgX2hlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgfVxyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJub1RpcFwiLCBub1RpcCA/IFwiMVwiIDogXCIwXCIpO1xyXG4gICAgbGV0IHdpdGhDcmVkZW50aWFsczogYW55ID0gdHJ1ZVxyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNXaXRoQ3JlZGVudGlhbHMnKSkge1xyXG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSBvcHRpb25zLmlzV2l0aENyZWRlbnRpYWxzXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zdFBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICBpZiAocGFyYW1zW2tleV0gIT09IG51bGwgJiYgcGFyYW1zW2tleV0gIT09ICcnICYmIHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHBhcmFtc1trZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgcG9zdFBhcmFtc1trZXldID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvc3RQYXJhbXNba2V5XSA9IHBhcmFtc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBudWxsLCB7XHJcbiAgICAgIGhlYWRlcnM6IF9oZWFkZXJzLFxyXG4gICAgICBwYXJhbXM6IHBvc3RQYXJhbXMsXHJcbiAgICAgIHdpdGhDcmVkZW50aWFsczogd2l0aENyZWRlbnRpYWxzXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcG9zdEJvZHkgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IEh0dHBPcHRpb25zLCBoZWFkZXJzPzoge30sIG5vVGlwID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImFhYVwiKTtcclxuICAgICAgbGV0IF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm5vVGlwXCIsIG5vVGlwID8gXCIxXCIgOiBcIjBcIik7XHJcbiAgICAgIGxldCB3aXRoQ3JlZGVudGlhbHM6IGFueSA9IHRydWVcclxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaXNXaXRoQ3JlZGVudGlhbHMnKSkge1xyXG4gICAgICAgIHdpdGhDcmVkZW50aWFscyA9IG9wdGlvbnMuaXNXaXRoQ3JlZGVudGlhbHNcclxuICAgICAgfVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhfaGVhZGVycyk7XHJcbiAgICAgIC8qZm9yKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICAgICAgaWYocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHBhcmFtc1trZXldICA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9Ki9cclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgcGFyYW1zLCB7aGVhZGVyczogX2hlYWRlcnMsIHBhcmFtczoge30sIHdpdGhDcmVkZW50aWFsczogd2l0aENyZWRlbnRpYWxzfSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQocmVzdWx0KTtcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIG9ic2VydmUuZXJyb3IoZXJyb3IpXHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0SGVhZGVyKF9oZWFkZXJzOiBIdHRwSGVhZGVycyk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBhdHJfc3RhdGljX2RhdGFzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpXHJcbiAgfVxyXG5cclxuICBnZXQgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCBvcHRpb25zPzogSHR0cE9wdGlvbnMsIG5vVGlwID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG5cclxuICAgICAgbGV0IF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzQ29tbW9uSHR0cEhlYWRlcicpKSB7XHJcbiAgICAgICAgX2hlYWRlcnMgPSB0aGlzLmdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIF9oZWFkZXJzID0gdGhpcy5nZXROb3JtYWxIZWFkZXIoX2hlYWRlcnMpO1xyXG4gICAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm5vVGlwXCIsIG5vVGlwID8gXCIxXCIgOiBcIjBcIik7XHJcbiAgICAgIGxldCB3aXRoQ3JlZGVudGlhbHM6IGFueSA9IGZhbHNlXHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2lzV2l0aENyZWRlbnRpYWxzJykpIHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSBvcHRpb25zLmlzV2l0aENyZWRlbnRpYWxzXHJcbiAgICAgIH1cclxuICAgICAgLy8gY29uc29sZS5sb2cob3B0aW9ucylcclxuICAgICAgLy8gY29uc29sZS5sb2coX2hlYWRlcnMpXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XHJcbiAgICAgICAgaGVhZGVyczogX2hlYWRlcnMsXHJcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHNcclxuICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5uZXh0KHJlc3VsdCk7XHJcbiAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSAobWV0aG9kOiBhbnksIHVybDogYW55LCBmb3JtRGF0YTogRm9ybURhdGEsIHByb2dyZXNzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgbGV0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdChtZXRob2QsIHVybCwgZm9ybURhdGEsIHtyZXBvcnRQcm9ncmVzczogdHJ1ZX0pXHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcHJvZ3Jlc3MgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBldmVudFsncHJvZ3Jlc3MnXSA9IHBhcnNlSW50KGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsICogMTAwICsgJycpXHJcbiAgICAgICAgICAgIHByb2dyZXNzKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChldmVudC5ib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtU3RyaW5nID0gKG9iakl0ZW06IGFueSkgPT4ge1xyXG4gICAgdmFyIGxpc3Q6IGFueSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqSXRlbSkge1xyXG4gICAgICB2YXIgc3RyID0gJyc7XHJcbiAgICAgIGxldCBpdGVtID0gb2JqSXRlbVtrZXldXHJcbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAvL+aVsOe7hFxyXG4gICAgICAgIHZhciBhcnI6IGFueSA9IFtdO1xyXG4gICAgICAgIGl0ZW0uZm9yRWFjaCgodiwgaykgPT4ge1xyXG4gICAgICAgICAgdmFyIHMgPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICdbJyArIGsgKyAnXSc7XHJcbiAgICAgICAgICBhcnIucHVzaCh0aGlzLnBhcnNlT2JqKHYsIHMpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgIC8vanNvblxyXG4gICAgICAgIHZhciBhcnI6IGFueSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgayBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW1ba11cclxuICAgICAgICAgIHZhciBzID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnLicgKyBlbmNvZGVVUklDb21wb25lbnQoayk7XHJcbiAgICAgICAgICBhcnIucHVzaCh0aGlzLnBhcnNlT2JqKHYsIHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RyID0gYXJyLmpvaW4oJyYnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL+aZrumAmuexu+Wei1xyXG4gICAgICAgIHN0ciA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGxpc3QucHVzaChzdHIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Quam9pbignJicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9iaiA9IChvYmo6IGFueSwgc3RyOiBhbnkpID0+IHtcclxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAvL+aVsOe7hFxyXG4gICAgICB2YXIgYXJyOiBhbnkgPSBbXTtcclxuICAgICAgb2JqLmZvckVhY2goKHYsIGspID0+IHtcclxuICAgICAgICB2YXIgcyA9IHN0ciArICdbJyArIGsgKyAnXScgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodik7XHJcbiAgICAgICAgYXJyLnB1c2godGhpcy5wYXJzZU9iaih2LCBzKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAvL2pzb25cclxuICAgICAgdmFyIGFycjogYW55ID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgayBpbiBvYmopIHtcclxuICAgICAgICBsZXQgdiA9IG9ialtrXVxyXG4gICAgICAgIHZhciBzID0gc3RyICsgJy4nICsgZW5jb2RlVVJJQ29tcG9uZW50KGspO1xyXG4gICAgICAgIGFyci5wdXNoKHRoaXMucGFyc2VPYmoodiwgcykpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0ciA9IGFyci5qb2luKCcmJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL+aZrumAmuexu+Wei1xyXG4gICAgICBzdHIgPSBzdHIgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQob2JqKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICBnZXRPc3MgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IHt9LCByZXNwb25zZVR5cGU/OiBhbnksIG5vRXJyb3IgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgaWYgKHVybCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBvYnNlcnZlLm5leHQoKTtcclxuICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhcInVybFwiLCB1cmwpXHJcbiAgICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgICAgdXJsID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsgdXJsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICBsZXQgd2l0aENyZWRlbnRpYWxzID0gZmFsc2VcclxuICAgICAgLy8gLy9jb25zb2xlLmxvZyhfaGVhZGVycylcclxuICAgICAgaWYgKHVybC5lbmRzV2l0aChcIi5vXCIpICYmICFwYXJhbXMpIHtcclxuICAgICAgICB1cmwgKz0gXCI/dj1cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub0Vycm9yKSB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPiAwKSB7XHJcbiAgICAgICAgICB1cmwgKz0gXCImbm9FcnJvclwiXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCArPSBcIj9ub0Vycm9yXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcclxuICAgICAgICBoZWFkZXJzOiBfaGVhZGVycyxcclxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHdpdGhDcmVkZW50aWFscyxcclxuICAgICAgICByZXNwb25zZVR5cGU6IHJlc3BvbnNlVHlwZSB8fCAndGV4dCdcclxuICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5uZXh0KHJlc3VsdCk7XHJcbiAgICAgICAgb2JzZXJ2ZS51bnN1YnNjcmliZSgpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFhscyh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICB0aGlzLnBvc3QoXCJ0aGlyZC9hdXRoL2dldEF1dGhUb2tlblwiLCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShcclxuICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICBsZXQgdGhyaWRQYXJtYSA9IHtcclxuICAgICAgICAgIFwicmVxTWV0aG9kXCI6IFwiYXV0aFwiLFxyXG4gICAgICAgICAgXCJzaWduXCI6IHJlc3VsdC5kYXRhLFxyXG4gICAgICAgICAgXCJ4LWhlYWRlci1hdHJcIjogXCJ3ZWJcIixcclxuICAgICAgICAgIHRva2VuOiBMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJUb2tlbigpLFxyXG4gICAgICAgICAgdXNlcklkOiBMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJJZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmFtcyA9IE9iamVjdC5hc3NpZ24ocGFyYW1zLCB0aHJpZFBhcm1hKTtcclxuICAgICAgICBUb29sc1V0aWwuZG93bmxvYWRYbHMoYXRyX3N0YXRpY19kYXRhcy5TRVJWRVJfVVJMICsgdXJsLCBwYXJhbXMpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
|