@@ -21,9 +21,9 @@ if(!PlayFab.settings) {
2121if ( ! PlayFab . _internalSettings ) {
2222 PlayFab . _internalSettings = {
2323 entityToken : null ,
24- sdkVersion : "1.41.190304 " ,
24+ sdkVersion : "1.42.190312 " ,
2525 requestGetParams : {
26- sdk : "JavaScriptSDK-1.41.190304 "
26+ sdk : "JavaScriptSDK-1.42.190312 "
2727 } ,
2828 sessionTicket : null ,
2929 verticalName : null , // The name of a customer vertical. This is only for customers running a private cluster. Generally you shouldn't touch this
@@ -60,104 +60,179 @@ if(!PlayFab._internalSettings) {
6060 } ,
6161
6262 ExecuteRequest : function ( url , request , authkey , authValue , callback , customData , extraHeaders ) {
63- if ( callback != null && typeof ( callback ) != "function" )
64- throw "Callback must be null of a function" ;
65-
66- if ( request == null )
67- request = { } ;
68-
69- var startTime = new Date ( ) ;
70- var requestBody = JSON . stringify ( request ) ;
71-
72- var urlArr = [ url ] ;
73- var getParams = PlayFab . _internalSettings . requestGetParams ;
74- if ( getParams != null ) {
75- var firstParam = true ;
76- for ( var key in getParams ) {
77- if ( firstParam ) {
78- urlArr . push ( "?" ) ;
79- firstParam = false ;
80- } else {
81- urlArr . push ( "&" ) ;
63+ var resultPromise = new Promise ( function ( resolve , reject ) {
64+ if ( callback != null && typeof ( callback ) !== "function" )
65+ throw "Callback must be null of a function" ;
66+
67+ if ( request == null )
68+ request = { } ;
69+
70+ var startTime = new Date ( ) ;
71+ var requestBody = JSON . stringify ( request ) ;
72+
73+ var urlArr = [ url ] ;
74+ var getParams = PlayFab . _internalSettings . requestGetParams ;
75+ if ( getParams != null ) {
76+ var firstParam = true ;
77+ for ( var key in getParams ) {
78+ if ( firstParam ) {
79+ urlArr . push ( "?" ) ;
80+ firstParam = false ;
81+ } else {
82+ urlArr . push ( "&" ) ;
83+ }
84+ urlArr . push ( key ) ;
85+ urlArr . push ( "=" ) ;
86+ urlArr . push ( getParams [ key ] ) ;
8287 }
83- urlArr . push ( key ) ;
84- urlArr . push ( "=" ) ;
85- urlArr . push ( getParams [ key ] ) ;
8688 }
87- }
8889
89- var completeUrl = urlArr . join ( "" ) ;
90+ var completeUrl = urlArr . join ( "" ) ;
9091
91- var xhr = new XMLHttpRequest ( ) ;
92- // window.console.log("URL: " + completeUrl);
93- xhr . open ( "POST" , completeUrl , true ) ;
92+ var xhr = new XMLHttpRequest ( ) ;
93+ // window.console.log("URL: " + completeUrl);
94+ xhr . open ( "POST" , completeUrl , true ) ;
9495
95- xhr . setRequestHeader ( "Content-Type" , "application/json" ) ;
96- xhr . setRequestHeader ( "X-PlayFabSDK" , "JavaScriptSDK-" + PlayFab . _internalSettings . sdkVersion ) ;
97- if ( authkey != null )
98- xhr . setRequestHeader ( authkey , authValue ) ;
99- PlayFab . _internalSettings . InjectHeaders ( xhr , PlayFab . settings . GlobalHeaderInjection ) ;
100- PlayFab . _internalSettings . InjectHeaders ( xhr , extraHeaders ) ;
96+ xhr . setRequestHeader ( "Content-Type" , "application/json" ) ;
97+ xhr . setRequestHeader ( "X-PlayFabSDK" , "JavaScriptSDK-" + PlayFab . _internalSettings . sdkVersion ) ;
98+ if ( authkey != null )
99+ xhr . setRequestHeader ( authkey , authValue ) ;
100+ PlayFab . _internalSettings . InjectHeaders ( xhr , PlayFab . settings . GlobalHeaderInjection ) ;
101+ PlayFab . _internalSettings . InjectHeaders ( xhr , extraHeaders ) ;
101102
102- xhr . onloadend = function ( ) {
103- if ( callback == null )
104- return ;
103+ xhr . onloadend = function ( ) {
104+ if ( callback == null )
105+ return ;
105106
106- var result ;
107- try {
108- // window.console.log("parsing json result: " + xhr.responseText);
109- result = JSON . parse ( xhr . responseText ) ;
110- } catch ( e ) {
111- result = {
112- code : 503 , // Service Unavailable
113- status : "Service Unavailable" ,
114- error : "Connection error" ,
115- errorCode : 2 , // PlayFabErrorCode.ConnectionError
116- errorMessage : xhr . responseText
117- } ;
107+ var result = PlayFab . _internalSettings . GetPlayFabResponse ( request , xhr , startTime , customData ) ;
108+ if ( result . code === 200 ) {
109+ callback ( result , null ) ;
110+ } else {
111+ callback ( null , result ) ;
112+ }
118113 }
119114
120- result . CallBackTimeMS = new Date ( ) - startTime ;
121- result . Request = request ;
122- result . CustomData = customData ;
115+ xhr . onerror = function ( ) {
116+ if ( callback == null )
117+ return ;
123118
124- if ( result . code === 200 )
125- callback ( result , null ) ;
126- else
119+ var result = PlayFab . _internalSettings . GetPlayFabResponse ( request , xhr , startTime , customData ) ;
127120 callback ( null , result ) ;
121+ }
122+
123+ xhr . send ( requestBody ) ;
124+ xhr . onreadystatechange = function ( ) {
125+ if ( this . readyState === 4 ) {
126+ var xhrResult = PlayFab . _internalSettings . GetPlayFabResponse ( request , this , startTime , customData ) ;
127+ if ( this . status === 200 ) {
128+ resolve ( xhrResult ) ;
129+ } else {
130+ reject ( xhrResult ) ;
131+ }
132+ }
133+ } ;
134+ } ) ;
135+ // Return a Promise so that calls to various API methods can be handled asynchronously
136+ return resultPromise ;
137+ } ,
138+
139+ GetPlayFabResponse : function ( request , xhr , startTime , customData ) {
140+ var result = null ;
141+ try {
142+ // window.console.log("parsing json result: " + xhr.responseText);
143+ result = JSON . parse ( xhr . responseText ) ;
144+ } catch ( e ) {
145+ result = {
146+ code : 503 , // Service Unavailable
147+ status : "Service Unavailable" ,
148+ error : "Connection error" ,
149+ errorCode : 2 , // PlayFabErrorCode.ConnectionError
150+ errorMessage : xhr . responseText
151+ } ;
128152 }
129153
130- xhr . onerror = function ( ) {
131- if ( callback == null )
132- return ;
154+ result . CallBackTimeMS = new Date ( ) - startTime ;
155+ result . Request = request ;
156+ result . CustomData = customData ;
157+ return result ;
158+ } ,
133159
134- var result ;
135- try {
136- result = JSON . parse ( xhr . responseText ) ;
137- } catch ( e ) {
138- result = {
139- code : 503 , // Service Unavailable
140- status : "Service Unavailable" ,
141- error : "Connection error" ,
142- errorCode : 2 , // PlayFabErrorCode.ConnectionError
143- errorMessage : xhr . responseText
144- } ;
145- }
160+ authenticationContext : {
161+ PlayFabId : null ,
162+ EntityId : null ,
163+ EntityType : null ,
164+ SessionTicket : null ,
165+ EntityToken : null
166+ } ,
146167
147- result . CallBackTimeMS = new Date ( ) - startTime ;
148- result . Request = request ;
149- result . CustomData = customData ;
168+ UpdateAuthenticationContext : function ( authenticationContext , result ) {
169+ var authenticationContextUpdates = { } ;
170+ if ( result . data . PlayFabId !== null ) {
171+ PlayFab . _internalSettings . authenticationContext . PlayFabId = result . data . PlayFabId ;
172+ authenticationContextUpdates . PlayFabId = result . data . PlayFabId ;
173+ }
174+ if ( result . data . SessionTicket !== null ) {
175+ PlayFab . _internalSettings . authenticationContext . SessionTicket = result . data . SessionTicket ;
176+ authenticationContextUpdates . SessionTicket = result . data . SessionTicket ;
177+ }
178+ if ( result . data . EntityToken !== null ) {
179+ PlayFab . _internalSettings . authenticationContext . EntityId = result . data . EntityToken . Entity . Id ;
180+ authenticationContextUpdates . EntityId = result . data . EntityToken . Entity . Id ;
181+ PlayFab . _internalSettings . authenticationContext . EntityType = result . data . EntityToken . Entity . Type ;
182+ authenticationContextUpdates . EntityType = result . data . EntityToken . Entity . Type ;
183+ PlayFab . _internalSettings . authenticationContext . EntityToken = result . data . EntityToken . EntityToken ;
184+ authenticationContextUpdates . EntityToken = result . data . EntityToken . EntityToken ;
185+ }
186+ // Update the authenticationContext with values from the result
187+ authenticationContext = Object . assign ( authenticationContext , authenticationContextUpdates ) ;
188+ return authenticationContext ;
189+ } ,
150190
151- callback ( null , result ) ;
191+ AuthInfoMap : {
192+ "X-EntityToken" : {
193+ authAttr : "entityToken" ,
194+ authError : "errorEntityToken"
195+ } ,
196+ "X-Authorization" : {
197+ authAttr : "sessionTicket" ,
198+ authError : "errorLoggedIn"
199+ } ,
200+ "X-SecretKey" : {
201+ authAttr : "developerSecretKey" ,
202+ authError : "errorSecretKey"
152203 }
204+ } ,
153205
154- xhr . send ( requestBody ) ;
206+ GetAuthInfo : function ( request , authKey ) {
207+ // Use the most-recently saved authKey, unless one was provided in the request via the AuthenticationContext
208+ var authError = PlayFab . _internalSettings . AuthInfoMap [ authKey ] . authError ;
209+ var authAttr = PlayFab . _internalSettings . AuthInfoMap [ authKey ] . authAttr ;
210+ var defaultAuthValue = null ;
211+ if ( authAttr === "entityToken" )
212+ defaultAuthValue = PlayFab . _internalSettings . entityToken ;
213+ else if ( authAttr === "sessionTicket" )
214+ defaultAuthValue = PlayFab . _internalSettings . sessionTicket ;
215+ else if ( authAttr === "developerSecretKey" )
216+ defaultAuthValue = PlayFab . settings . developerSecretKey ;
217+ var authValue = request . AuthenticationContext ? request . AuthenticationContext [ authAttr ] : defaultAuthValue ;
218+ return { "authKey" : authKey , "authValue" : authValue , "authError" : authError } ;
219+ } ,
220+
221+ ExecuteRequestWrapper : function ( apiURL , request , authKey , callback , customData , extraHeaders ) {
222+ var authValue = null ;
223+ if ( authKey !== null ) {
224+ var authInfo = PlayFab . _internalSettings . GetAuthInfo ( request , authKey = authKey ) ;
225+ var authKey = authInfo . authKey , authValue = authInfo . authValue , authError = authInfo . authError ;
226+
227+ if ( ! authValue ) throw authError ;
228+ }
229+ return PlayFab . _internalSettings . ExecuteRequest ( PlayFab . _internalSettings . GetServerUrl ( ) + apiURL , request , authKey , authValue , callback , customData , extraHeaders ) ;
155230 }
156231 }
157232}
158233
159- PlayFab . buildIdentifier = "jbuild_javascriptsdk__sdk-genericslave-3_0 " ;
160- PlayFab . sdkVersion = "1.41.190304 " ;
234+ PlayFab . buildIdentifier = "jbuild_javascriptsdk__sdk-genericslave-1_0 " ;
235+ PlayFab . sdkVersion = "1.42.190312 " ;
161236PlayFab . GenerateErrorReport = function ( error ) {
162237 if ( error == null )
163238 return "" ;
@@ -176,15 +251,15 @@ PlayFab.AuthenticationApi = {
176251
177252 GetEntityToken : function ( request , callback , customData , extraHeaders ) {
178253 var authKey = null ; var authValue = null ;
179- if ( ! authKey && PlayFab . _internalSettings . sessionTicket ) { authKey = "X-Authorization" ; authValue = PlayFab . _internalSettings . sessionTicket ; }
180- if ( ! authKey && PlayFab . settings . developerSecretKey ) { authKey = "X-SecretKey" ; authValue = PlayFab . settings . developerSecretKey ; }
254+ if ( ! authKey && PlayFab . _internalSettings . sessionTicket ) { var authInfo = PlayFab . _internalSettings . GetAuthInfo ( request , authKey = "X-Authorization" ) ; authKey = authInfo . authKey , authValue = authInfo . authValue ; }
255+ if ( ! authKey && PlayFab . settings . developerSecretKey ) { var authInfo = PlayFab . _internalSettings . GetAuthInfo ( request , authKey = "X-SecretKey" ) ; authKey = authInfo . authKey , authValue = authInfo . authValue ; }
181256 var overloadCallback = function ( result , error ) {
182257 if ( result != null && result . data . EntityToken != null )
183258 PlayFab . _internalSettings . entityToken = result . data . EntityToken ;
184- if ( callback != null && typeof ( callback ) == "function" )
259+ if ( callback != null && typeof ( callback ) === "function" )
185260 callback ( result , error ) ;
186261 } ;
187- PlayFab . _internalSettings . ExecuteRequest ( PlayFab . _internalSettings . GetServerUrl ( ) + "/Authentication/GetEntityToken" , request , authKey , authValue , overloadCallback , customData , extraHeaders ) ;
262+ return PlayFab . _internalSettings . ExecuteRequestWrapper ( "/Authentication/GetEntityToken" , request , authKey , overloadCallback , customData , extraHeaders ) ;
188263 } ,
189264} ;
190265
0 commit comments