2525( function ( WebApiClient , undefined ) {
2626 var Promise = require ( "bluebird" ) ;
2727
28- var apiVersion = "8.0" ;
28+ var ApiVersion = "8.0" ;
2929
3030 function GetCrmContext ( ) {
3131 if ( typeof ( GetGlobalContext ) !== "undefined" ) {
5353 return id . replace ( "{" , "" ) . replace ( "}" , "" ) ;
5454 }
5555
56+ WebApiClient . GetApiVersion = function ( ) {
57+ return ApiVersion ;
58+ } ;
59+
5660 WebApiClient . SetApiVersion = function ( version ) {
57- apiVersion = version ;
61+ ApiVersion = version ;
5862 } ;
5963
6064 WebApiClient . GetSetName = function ( entityName ) {
7175 }
7276 } ;
7377
78+ var DefaultHeaders = [
79+ { key : "Accept" , value : "application/json" } ,
80+ { key : "OData-Version" , value : "4.0" } ,
81+ { key : "OData-MaxVersion" , value : "4.0" } ,
82+ // Prevent caching since it sometimes sends old data as unmodified
83+ { key : "If-None-Match" , value : null }
84+ ] ;
85+
86+ WebApiClient . GetDefaultHeaders = function ( ) {
87+ return DefaultHeaders ;
88+ } ;
89+
90+ function VerifyHeader ( header ) {
91+ if ( ! header . key || typeof ( header . value ) === "undefined" ) {
92+ throw "Each request header needs a key and a value!" ;
93+ }
94+ }
95+
96+ WebApiClient . AppendToDefaultHeaders = function ( ) {
97+ if ( ! arguments ) {
98+ return ;
99+ }
100+
101+ for ( var i = 0 ; i < arguments . length ; i ++ ) {
102+ var argument = arguments [ i ] ;
103+
104+ DefaultHeaders . push ( arguments [ i ] ) ;
105+ }
106+ } ;
107+
108+ function AppendHeaders ( xhr , headers ) {
109+ if ( headers ) {
110+ for ( var i = 0 ; i < headers . length ; i ++ ) {
111+ var header = headers [ i ] ;
112+
113+ VerifyHeader ( header ) ;
114+
115+ xhr . setRequestHeader ( header . key , header . value ) ;
116+ }
117+ }
118+ }
119+
74120 // Private function
75- function SendRequest ( method , url , payload ) {
121+ function SendRequest ( method , url , payload , requestHeaders ) {
76122 var xhr = new XMLHttpRequest ( ) ;
77123
78124 var promise = new Promise ( function ( resolve , reject ) {
104150
105151 xhr . open ( method , url , true ) ;
106152
107- xhr . setRequestHeader ( "Accept" , "application/json" ) ;
108- xhr . setRequestHeader ( "OData-Version" , "4.0" ) ;
109- xhr . setRequestHeader ( "OData-MaxVersion" , "4.0" ) ;
110-
111- // Prevent caching since it sometimes sends old data as unmodified
112- xhr . setRequestHeader ( "If-None-Match" , null ) ;
153+ AppendHeaders ( xhr , WebApiClient . DefaultHeaders ) ;
154+ AppendHeaders ( xhr , requestHeaders ) ;
113155
114156 xhr . send ( JSON . stringify ( payload ) ) ;
115157
116158 return promise ;
117159 }
118160
119161 WebApiClient . GetApiUrl = function ( ) {
120- return GetClientUrl ( ) + "/api/data/v" + apiVersion + "/" ;
162+ return GetClientUrl ( ) + "/api/data/v" + ApiVersion + "/" ;
121163 } ;
122164
123165 WebApiClient . Create = function ( parameters ) {
129171
130172 var url = WebApiClient . GetApiUrl ( ) + WebApiClient . GetSetName ( params . entityName ) ;
131173
132- return SendRequest ( "POST" , url , params . entity ) ;
174+ return SendRequest ( "POST" , url , params . entity , params . headers ) ;
133175 } ;
134176
135177 WebApiClient . Retrieve = function ( parameters ) {
147189
148190 url += params . queryParams ;
149191
150- return SendRequest ( "GET" , url ) ;
192+ return SendRequest ( "GET" , url , null , params . headers ) ;
151193 } ;
152194
153195 WebApiClient . Update = function ( parameters ) {
159201
160202 var url = WebApiClient . GetApiUrl ( ) + WebApiClient . GetSetName ( params . entityName ) + "(" + RemoveIdBrackets ( params . entityId ) + ")" ;
161203
162- return SendRequest ( "PATCH" , url , params . entity ) ;
204+ return SendRequest ( "PATCH" , url , params . entity , params . headers ) ;
163205 } ;
164206
165207 WebApiClient . Delete = function ( parameters ) {
171213
172214 var url = WebApiClient . GetApiUrl ( ) + WebApiClient . GetSetName ( params . entityName ) + "(" + RemoveIdBrackets ( params . entityId ) + ")" ;
173215
174- return SendRequest ( "DELETE" , url ) ;
216+ return SendRequest ( "DELETE" , url , null , params . headers ) ;
175217 } ;
176218} ( window . WebApiClient = window . WebApiClient || { } ) ) ;
0 commit comments