11var DWA = require ( '../dwa' ) ;
22var ErrorHelper = require ( '../helpers/ErrorHelper' ) ;
3+ var buildPreferHeader = require ( './buildPreferHeader' ) ;
34
45/**
56 * @typedef {Object } ConvertedRequestOptions
@@ -21,9 +22,10 @@ var ErrorHelper = require('../helpers/ErrorHelper');
2122 * @param {string } functionName - Name of the function that converts a request (for Error Handling)
2223 * @param {string } url - URL beginning (with required parameters)
2324 * @param {string } [joinSymbol] - URL beginning (with required parameters)
25+ * @param {Object } [config] - DynamicsWebApi config
2426 * @returns {ConvertedRequestOptions }
2527 */
26- function convertRequestOptions ( request , functionName , url , joinSymbol ) {
28+ function convertRequestOptions ( request , functionName , url , joinSymbol , config ) {
2729 var headers = { } ;
2830 var requestArray = [ ] ;
2931 joinSymbol = joinSymbol != null ? joinSymbol : "&" ;
@@ -70,11 +72,6 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
7072 requestArray . push ( "userQuery=" + ErrorHelper . guidParameterCheck ( request . userQuery , "DynamicsWebApi." + functionName , "request.userQuery" ) ) ;
7173 }
7274
73- if ( request . maxPageSize && request . maxPageSize > 0 ) {
74- ErrorHelper . numberParameterCheck ( request . maxPageSize , "DynamicsWebApi." + functionName , "request.maxPageSize" ) ;
75- headers [ 'Prefer' ] = 'odata.maxpagesize=' + request . maxPageSize ;
76- }
77-
7875 if ( request . count ) {
7976 ErrorHelper . boolParameterCheck ( request . count , "DynamicsWebApi." + functionName , "request.count" ) ;
8077 requestArray . push ( "$count=" + request . count ) ;
@@ -90,14 +87,10 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
9087 requestArray . push ( "$orderby=" + request . orderBy . join ( ',' ) ) ;
9188 }
9289
93- if ( request . returnRepresentation != null ) {
94- ErrorHelper . boolParameterCheck ( request . returnRepresentation , "DynamicsWebApi." + functionName , "request.returnRepresentation" ) ;
95- headers [ 'Prefer' ] = request . returnRepresentation ? DWA . Prefer . ReturnRepresentation : '' ;
96- }
90+ var prefer = buildPreferHeader ( request , functionName , config ) ;
9791
98- if ( request . includeAnnotations ) {
99- ErrorHelper . stringParameterCheck ( request . includeAnnotations , "DynamicsWebApi." + functionName , "request.includeAnnotations" ) ;
100- headers [ 'Prefer' ] = 'odata.include-annotations="' + request . includeAnnotations + '"' ;
92+ if ( prefer . length ) {
93+ headers [ 'Prefer' ] = prefer ;
10194 }
10295
10396 if ( request . ifmatch != null && request . ifnonematch != null ) {
@@ -124,21 +117,26 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
124117 headers [ "Authorization" ] = "Bearer: " + request . token ;
125118 }
126119
127- if ( request . expand != null && request . expand . length ) {
128- ErrorHelper . arrayParameterCheck ( request . expand , "DynamicsWebApi." + functionName , "request.expand" ) ;
129- var expandRequestArray = [ ] ;
130- for ( var i = 0 ; i < request . expand . length ; i ++ ) {
131- if ( request . expand [ i ] . property ) {
132- var expandConverted = convertRequestOptions ( request . expand [ i ] , functionName + " $expand" , null , ";" ) ;
133- var expandQuery = expandConverted . query ;
134- if ( expandQuery && expandQuery . length ) {
135- expandQuery = "(" + expandQuery + ")" ;
120+ if ( request . expand && request . expand . length ) {
121+ ErrorHelper . stringOrArrayParameterCheck ( request . expand , "DynamicsWebApi." + functionName , "request.expand" ) ;
122+ if ( typeof request . expand === "string" ) {
123+ requestArray . push ( "$expand=" + encodeURI ( request . expand ) ) ;
124+ }
125+ else {
126+ var expandRequestArray = [ ] ;
127+ for ( var i = 0 ; i < request . expand . length ; i ++ ) {
128+ if ( request . expand [ i ] . property ) {
129+ var expandConverted = convertRequestOptions ( request . expand [ i ] , functionName + " $expand" , null , ";" ) ;
130+ var expandQuery = expandConverted . query ;
131+ if ( expandQuery && expandQuery . length ) {
132+ expandQuery = "(" + expandQuery + ")" ;
133+ }
134+ expandRequestArray . push ( request . expand [ i ] . property + expandQuery ) ;
136135 }
137- expandRequestArray . push ( request . expand [ i ] . property + expandQuery ) ;
138136 }
139- }
140- if ( expandRequestArray . length ) {
141- requestArray . push ( "$expand=" + encodeURI ( expandRequestArray . join ( "," ) ) ) ;
137+ if ( expandRequestArray . length ) {
138+ requestArray . push ( "$expand=" + encodeURI ( expandRequestArray . join ( "," ) ) ) ;
139+ }
142140 }
143141 }
144142 }
@@ -151,9 +149,10 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
151149 *
152150 * @param {Object } request - Request object
153151 * @param {string } [functionName] - Name of the function that converts a request (for Error Handling only)
152+ * @param {Object } [config] - DynamicsWebApi config
154153 * @returns {ConvertedRequest }
155154 */
156- function convertRequest ( request , functionName ) {
155+ function convertRequest ( request , functionName , config ) {
157156
158157 if ( ! request . collection ) {
159158 ErrorHelper . parameterCheck ( request . collection , "DynamicsWebApi." + functionName , "request.collection" ) ;
@@ -169,7 +168,7 @@ function convertRequest(request, functionName) {
169168 url += "(" + request . id + ")" ;
170169 }
171170
172- var result = convertRequestOptions ( request , functionName , url ) ;
171+ var result = convertRequestOptions ( request , functionName , url , '&' , config ) ;
173172
174173 if ( result . query )
175174 result . url += "?" + encodeURI ( result . query ) ;
0 commit comments