@@ -30,10 +30,14 @@ class AlfrescoApiClient extends ApiClient {
3030 * @param {Array.<String> } accepts An array of acceptable response MIME types.
3131 * @param {(String|Array|ObjectFunction) } returnType The required type to return; can be a string for simple types or the
3232 * @param {(String) } contextRoot alternative contextRoot
33+ * @param {(String) } responseType is an enumerated value that returns the type of the response.
34+ * It also lets the author change the response type to one "arraybuffer", "blob", "document",
35+ * "json", or "text".
36+ * If an empty string is set as the value of responseType, it is assumed as type "text".
3337 * constructor for a complex type. * @returns {Promise } A Promise object.
3438 */
3539 callApi ( path , httpMethod , pathParams , queryParams , headerParams , formParams , bodyParam , authNames ,
36- contentTypes , accepts , returnType , contextRoot ) {
40+ contentTypes , accepts , returnType , contextRoot , responseType ) {
3741
3842 var eventEmitter = { } ;
3943 Emitter ( eventEmitter ) ; // jshint ignore:line
@@ -47,72 +51,8 @@ class AlfrescoApiClient extends ApiClient {
4751 url = this . buildUrl ( path , pathParams ) ;
4852 }
4953
50- var request = superagent ( httpMethod , url ) ;
51-
52- // apply authentications
53- this . applyAuthToRequest ( request , [ 'basicAuth' ] ) ;
54-
55- // set query parameters
56- request . query ( this . normalizeParams ( queryParams ) ) ;
57-
58- // set header parameters
59- request . set ( this . defaultHeaders ) . set ( this . normalizeParams ( headerParams ) ) ;
60-
61- if ( this . isBpmRequest ( ) && this . isCsrfEnabled ( ) ) {
62- this . setCsrfToken ( request ) ;
63- }
64-
65- // add cookie for activiti
66- if ( this . isBpmRequest ( ) ) {
67- request . _withCredentials = true ;
68- if ( this . authentications . cookie ) {
69- if ( this . isNodeEnv ( ) ) {
70- request . set ( 'Cookie' , this . authentications . cookie ) ;
71- }
72- }
73- }
74-
75- // set request timeout
76- request . timeout ( this . timeout ) ;
77-
78- var contentType = this . jsonPreferredMime ( contentTypes ) ;
79-
80- if ( contentType && contentType !== 'multipart/form-data' ) {
81- request . type ( contentType ) ;
82- } else if ( ! request . header [ 'Content-Type' ] && contentType !== 'multipart/form-data' ) {
83- request . type ( 'application/json' ) ;
84- }
85-
86- if ( contentType === 'application/x-www-form-urlencoded' ) {
87- request . send ( this . normalizeParams ( formParams ) ) . on ( 'progress' , ( event ) => {
88- this . progress ( event , eventEmitter ) ;
89- } ) ;
90- } else if ( contentType === 'multipart/form-data' ) {
91- var _formParams = this . normalizeParams ( formParams ) ;
92- for ( var key in _formParams ) {
93- if ( _formParams . hasOwnProperty ( key ) ) {
94- if ( this . isFileParam ( _formParams [ key ] ) ) {
95- // file field
96- request . attach ( key , _formParams [ key ] ) . on ( 'progress' , ( event ) => { // jshint ignore:line
97- this . progress ( event , eventEmitter ) ;
98- } ) ;
99- } else {
100- request . field ( key , _formParams [ key ] ) . on ( 'progress' , ( event ) => { // jshint ignore:line
101- this . progress ( event , eventEmitter ) ;
102- } ) ;
103- }
104- }
105- }
106- } else if ( bodyParam ) {
107- request . send ( bodyParam ) . on ( 'progress' , ( event ) => {
108- this . progress ( event , eventEmitter ) ;
109- } ) ;
110- }
111-
112- var accept = this . jsonPreferredMime ( accepts ) ;
113- if ( accept ) {
114- request . accept ( accept ) ;
115- }
54+ var request = this . buildRequest ( httpMethod , url , queryParams , headerParams , formParams , bodyParam ,
55+ contentTypes , accepts , responseType , eventEmitter ) ;
11656
11757 this . promise = new Promise ( ( resolve , reject ) => {
11858 request . end ( ( error , response ) => {
@@ -250,6 +190,82 @@ class AlfrescoApiClient extends ApiClient {
250190 } ) ;
251191 return url ;
252192 }
193+
194+ buildRequest ( httpMethod , url , queryParams , headerParams , formParams , bodyParam ,
195+ contentTypes , accepts , responseType , eventEmitter ) {
196+ var request = superagent ( httpMethod , url ) ;
197+
198+ // apply authentications
199+ this . applyAuthToRequest ( request , [ 'basicAuth' ] ) ;
200+
201+ // set query parameters
202+ request . query ( this . normalizeParams ( queryParams ) ) ;
203+
204+ // set header parameters
205+ request . set ( this . defaultHeaders ) . set ( this . normalizeParams ( headerParams ) ) ;
206+
207+ if ( this . isBpmRequest ( ) && this . isCsrfEnabled ( ) ) {
208+ this . setCsrfToken ( request ) ;
209+ }
210+
211+ // add cookie for activiti
212+ if ( this . isBpmRequest ( ) ) {
213+ request . _withCredentials = true ;
214+ if ( this . authentications . cookie ) {
215+ if ( this . isNodeEnv ( ) ) {
216+ request . set ( 'Cookie' , this . authentications . cookie ) ;
217+ }
218+ }
219+ }
220+
221+ // set request timeout
222+ request . timeout ( this . timeout ) ;
223+
224+ if ( responseType ) {
225+ request . _responseType = responseType ;
226+ }
227+
228+ var contentType = this . jsonPreferredMime ( contentTypes ) ;
229+
230+ if ( contentType && contentType !== 'multipart/form-data' ) {
231+ request . type ( contentType ) ;
232+ } else if ( ! request . header [ 'Content-Type' ] && contentType !== 'multipart/form-data' ) {
233+ request . type ( 'application/json' ) ;
234+ }
235+
236+ if ( contentType === 'application/x-www-form-urlencoded' ) {
237+ request . send ( this . normalizeParams ( formParams ) ) . on ( 'progress' , ( event ) => {
238+ this . progress ( event , eventEmitter ) ;
239+ } ) ;
240+ } else if ( contentType === 'multipart/form-data' ) {
241+ var _formParams = this . normalizeParams ( formParams ) ;
242+ for ( var key in _formParams ) {
243+ if ( _formParams . hasOwnProperty ( key ) ) {
244+ if ( this . isFileParam ( _formParams [ key ] ) ) {
245+ // file field
246+ request . attach ( key , _formParams [ key ] ) . on ( 'progress' , ( event ) => { // jshint ignore:line
247+ this . progress ( event , eventEmitter ) ;
248+ } ) ;
249+ } else {
250+ request . field ( key , _formParams [ key ] ) . on ( 'progress' , ( event ) => { // jshint ignore:line
251+ this . progress ( event , eventEmitter ) ;
252+ } ) ;
253+ }
254+ }
255+ }
256+ } else if ( bodyParam ) {
257+ request . send ( bodyParam ) . on ( 'progress' , ( event ) => {
258+ this . progress ( event , eventEmitter ) ;
259+ } ) ;
260+ }
261+
262+ var accept = this . jsonPreferredMime ( accepts ) ;
263+ if ( accept ) {
264+ request . accept ( accept ) ;
265+ }
266+
267+ return request ;
268+ }
253269}
254270
255271Emitter ( AlfrescoApiClient . prototype ) ; // jshint ignore:line
0 commit comments