Skip to content

Commit ed7968c

Browse files
committed
Add request enchancers
1 parent beeb207 commit ed7968c

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/api.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class DICOMwebClient {
3737
* @param {String} options.username - Username
3838
* @param {String} options.password - Password
3939
* @param {Object} options.headers - HTTP headers
40+
* @param {Array} options.enhancers - Enhancers
4041
*/
4142
constructor(options) {
4243
this.baseURL = options.url;
@@ -75,6 +76,10 @@ class DICOMwebClient {
7576
this.stowURL = this.baseURL;
7677
}
7778

79+
if ("enhancers" in options) {
80+
this.enhancers = options.enhancers;
81+
}
82+
7883
// Headers to pass to requests.
7984
this.headers = options.headers || {};
8085

@@ -108,7 +113,7 @@ class DICOMwebClient {
108113
const {errorInterceptor} = this;
109114

110115
return new Promise((resolve, reject) => {
111-
const request = new XMLHttpRequest();
116+
let request = new XMLHttpRequest();
112117
request.open(method, url, true);
113118
if ("responseType" in options) {
114119
request.responseType = options.responseType;
@@ -171,6 +176,12 @@ class DICOMwebClient {
171176
}
172177
}
173178

179+
if ("enhancers" in options) {
180+
const pipe = functions => args => functions.reduce((arg, fn) => fn(arg), args);
181+
const pipedRequest = pipe(options.enhancers);
182+
request = pipedRequest(request);
183+
}
184+
174185
if ("data" in options) {
175186
request.send(options.data);
176187
} else {
@@ -192,7 +203,8 @@ class DICOMwebClient {
192203
_httpGet(url, headers, responseType, progressCallback) {
193204
return this._httpRequest(url, "get", headers, {
194205
responseType,
195-
progressCallback
206+
progressCallback,
207+
enhancers: this.enhancers
196208
});
197209
}
198210

@@ -631,7 +643,8 @@ class DICOMwebClient {
631643
_httpPost(url, headers, data, progressCallback) {
632644
return this._httpRequest(url, "post", headers, {
633645
data,
634-
progressCallback
646+
progressCallback,
647+
enhancers: this.enhancers
635648
});
636649
}
637650

0 commit comments

Comments
 (0)