@@ -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