/// <summary> /// Delete files on an entity's profile. /// </summary> public static async Task <PlayFabResult <DeleteFilesResponse> > DeleteFilesAsync(DeleteFilesRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { if ((request?.AuthenticationContext?.EntityToken ?? PlayFabSettings.staticPlayer.EntityToken) == null) { throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method"); } var httpResult = await PlayFabHttp.DoPost("/File/DeleteFiles", request, "X-EntityToken", PlayFabSettings.staticPlayer.EntityToken, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <DeleteFilesResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <DeleteFilesResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <DeleteFilesResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Creates a multiplayer server build with a managed container. /// </summary> public async Task <PlayFabResult <CreateBuildWithManagedContainerResponse> > CreateBuildWithManagedContainerAsync(CreateBuildWithManagedContainerRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { if (PlayFabSettings.EntityToken == null) { throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method"); } var httpResult = await PlayFabHttp.DoPost("/MultiplayerServer/CreateBuildWithManagedContainer", request, "X-EntityToken", PlayFabSettings.EntityToken, extraHeaders, apiSettings); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <CreateBuildWithManagedContainerResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <CreateBuildWithManagedContainerResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <CreateBuildWithManagedContainerResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Update the metadata for an item in the working catalog. /// </summary> public static async Task <PlayFabResult <UpdateDraftItemResponse> > UpdateDraftItemAsync(UpdateDraftItemRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { await new PlayFabUtil.SynchronizationContextRemover(); var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; var requestSettings = PlayFabSettings.staticSettings; if (requestContext.EntityToken == null) { throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); } var httpResult = await PlayFabHttp.DoPost("/Catalog/UpdateDraftItem", request, "X-EntityToken", requestContext.EntityToken, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <UpdateDraftItemResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <UpdateDraftItemResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <UpdateDraftItemResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Informs the PlayFab game server hosting service that the indicated user has left the Game Server Instance specified /// </summary> public static async Task <PlayFabResult <PlayerLeftResponse> > PlayerLeftAsync(PlayerLeftRequest request, object customData = null) { if (PlayFabSettings.DeveloperSecretKey == null) { throw new Exception("Must have PlayFabSettings.DeveloperSecretKey set to call this method"); } var httpResult = await PlayFabHttp.DoPost("/Matchmaker/PlayerLeft", request, "X-SecretKey", PlayFabSettings.DeveloperSecretKey); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; if (PlayFabSettings.GlobalErrorHandler != null) { PlayFabSettings.GlobalErrorHandler(error); } return(new PlayFabResult <PlayerLeftResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = JsonWrapper.DeserializeObject <PlayFabJsonSuccess <PlayerLeftResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <PlayerLeftResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Informs the PlayFab game server hosting service that the indicated user has left the Game Server Instance specified /// </summary> public static async Task <PlayFabResult <PlayerLeftResponse> > PlayerLeftAsync(PlayerLeftRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { if (PlayFabSettings.staticSettings.DeveloperSecretKey == null) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must have PlayFabSettings.staticSettings.DeveloperSecretKey set to call this method"); } var httpResult = await PlayFabHttp.DoPost("/Matchmaker/PlayerLeft", request, "X-SecretKey", PlayFabSettings.staticSettings.DeveloperSecretKey, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <PlayerLeftResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <PlayerLeftResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <PlayerLeftResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Informs the PlayFab game server hosting service that the indicated user has joined the Game Server Instance specified /// </summary> public static async Task <PlayFabResult <PlayerJoinedResponse> > PlayerJoinedAsync(PlayerJoinedRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { await new PlayFabUtil.SynchronizationContextRemover(); var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; var requestSettings = PlayFabSettings.staticSettings; if (requestSettings.DeveloperSecretKey == null) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "DeveloperSecretKey must be set in your local or global settings to call this method"); } var httpResult = await PlayFabHttp.DoPost("/Matchmaker/PlayerJoined", request, "X-SecretKey", requestSettings.DeveloperSecretKey, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <PlayerJoinedResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <PlayerJoinedResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <PlayerJoinedResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Cloud Script is one of PlayFab's most versatile features. It allows client code to request execution of any kind of /// custom server-side functionality you can implement, and it can be used in conjunction with virtually anything. /// </summary> public static async Task <PlayFabResult <ExecuteCloudScriptResult> > ExecuteEntityCloudScriptAsync(ExecuteEntityCloudScriptRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { if (PlayFabSettings.EntityToken == null) { throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method"); } var httpResult = await PlayFabHttp.DoPost("/CloudScript/ExecuteEntityCloudScript", request, "X-EntityToken", PlayFabSettings.EntityToken, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <ExecuteCloudScriptResult> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <ExecuteCloudScriptResult> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <ExecuteCloudScriptResult> { Result = result, CustomData = customData }); }
/// <summary> /// Informs the PlayFab game server hosting service that the indicated user has joined the Game Server Instance specified /// </summary> public async Task <PlayFabResult <PlayerJoinedResponse> > PlayerJoinedAsync(PlayerJoinedRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { var settings = apiSettings ?? PlayFabSettings.staticSettings; var developerSecretKey = settings.DeveloperSecretKey; if (developerSecretKey == null) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "DeveloperSecretKey is not found in Request, Server Instance or PlayFabSettings"); } var httpResult = await PlayFabHttp.DoPost("/Matchmaker/PlayerJoined", request, "X-SecretKey", developerSecretKey, extraHeaders, apiSettings); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <PlayerJoinedResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <PlayerJoinedResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <PlayerJoinedResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Cloud Script is one of PlayFab's most versatile features. It allows client code to request execution of any kind of /// custom server-side functionality you can implement, and it can be used in conjunction with virtually anything. /// </summary> public static async Task <PlayFabResult <ExecuteFunctionResult> > ExecuteFunctionAsync(ExecuteFunctionRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { await new PlayFabUtil.SynchronizationContextRemover(); var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; var requestSettings = PlayFabSettings.staticSettings; if (requestContext.EntityToken == null) { throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); } string localApiServerString = PlayFabSettings.LocalApiServer; if (!string.IsNullOrEmpty(localApiServerString)) { var baseUri = new System.Uri(localApiServerString); var fullUri = new System.Uri(baseUri, "/CloudScript/ExecuteFunction".TrimStart('/')); // Duplicate code necessary to avoid changing all SDK methods to new convention var debugHttpResult = await PlayFabHttp.DoPostWithFullUri(fullUri.AbsoluteUri, request, "X-EntityToken", requestContext.EntityToken, extraHeaders); if (debugHttpResult is PlayFabError debugError) { PlayFabSettings.GlobalErrorHandler?.Invoke(debugError); return(new PlayFabResult <ExecuteFunctionResult> { Error = debugError, CustomData = customData }); } var debugResultRawJson = (string)debugHttpResult; var debugResultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <ExecuteFunctionResult> >(debugResultRawJson); var debugResult = debugResultData.data; return(new PlayFabResult <ExecuteFunctionResult> { Result = debugResult, CustomData = customData }); } var httpResult = await PlayFabHttp.DoPost("/CloudScript/ExecuteFunction", request, "X-EntityToken", requestContext.EntityToken, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <ExecuteFunctionResult> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <ExecuteFunctionResult> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <ExecuteFunctionResult> { Result = result, CustomData = customData }); }
/// <summary> /// Method to exchange a legacy AuthenticationTicket or title SecretKey for an Entity Token or to refresh a still valid /// Entity Token. /// </summary> public static async Task <PlayFabResult <GetEntityTokenResponse> > GetEntityTokenAsync(GetEntityTokenRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { await new PlayFabUtil.SynchronizationContextRemover(); var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; var requestSettings = PlayFabSettings.staticSettings; string authKey = null, authValue = null; #if !DISABLE_PLAYFABCLIENT_API if (requestContext.ClientSessionTicket != null) { authKey = "X-Authorization"; authValue = requestContext.ClientSessionTicket; } #endif #if ENABLE_PLAYFABSERVER_API || ENABLE_PLAYFABADMIN_API if (requestSettings.DeveloperSecretKey != null) { authKey = "X-SecretKey"; authValue = requestSettings.DeveloperSecretKey; } #endif #if !DISABLE_PLAYFABENTITY_API if (requestContext.EntityToken != null) { authKey = "X-EntityToken"; authValue = requestContext.EntityToken; } #endif var httpResult = await PlayFabHttp.DoPost("/Authentication/GetEntityToken", request, authKey, authValue, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <GetEntityTokenResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <GetEntityTokenResponse> >(resultRawJson); var result = resultData.data; var updateContext = PlayFabSettings.staticPlayer; updateContext.EntityToken = result.EntityToken; updateContext.EntityId = result.Entity.Id; updateContext.EntityType = result.Entity.Type; return(new PlayFabResult <GetEntityTokenResponse> { Result = result, CustomData = customData }); }
private static async Task<PlayFabResult<WriteEventsResponse>> WriteTelemetryAsync(WriteEventsRequest request, object customData = null, Dictionary<string, string> extraHeaders = null) { if ((request?.AuthenticationContext?.EntityToken ?? PlayFabSettings.staticPlayer.EntityToken) == null) throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method"); var httpResult = await PlayFabHttp.DoPost("/Event/WriteTelemetryEvents", request, "X-EntityToken", PlayFabSettings.staticPlayer.EntityToken, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; return new PlayFabResult<WriteEventsResponse> { Error = error, CustomData = customData }; } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<WriteEventsResponse>>(resultRawJson); var result = resultData.data; return new PlayFabResult<WriteEventsResponse> { Result = result, CustomData = customData }; }
/// <summary> /// Lists quality of service servers. /// </summary> public static async Task <PlayFabResult <ListQosServersResponse> > ListQosServersAsync(ListQosServersRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { var httpResult = await PlayFabHttp.DoPost("/MultiplayerServer/ListQosServers", request, null, null, extraHeaders); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <ListQosServersResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <ListQosServersResponse> >(resultRawJson); var result = resultData.data; return(new PlayFabResult <ListQosServersResponse> { Result = result, CustomData = customData }); }
/// <summary> /// Method to exchange a legacy AuthenticationTicket or title SecretKey for an Entity Token or to refresh a still valid /// Entity Token. /// </summary> public async Task <PlayFabResult <GetEntityTokenResponse> > GetEntityTokenAsync(GetEntityTokenRequest request, object customData = null, Dictionary <string, string> extraHeaders = null) { string authKey = null, authValue = null; if (PlayFabSettings.ClientSessionTicket != null) { authKey = "X-Authorization"; authValue = PlayFabSettings.ClientSessionTicket; } if (PlayFabSettings.DeveloperSecretKey != null) { authKey = "X-SecretKey"; authValue = PlayFabSettings.DeveloperSecretKey; } if (PlayFabSettings.EntityToken != null) { authKey = "X-EntityToken"; authValue = PlayFabSettings.EntityToken; } var httpResult = await PlayFabHttp.DoPost("/Authentication/GetEntityToken", request, authKey, authValue, extraHeaders, apiSettings); if (httpResult is PlayFabError) { var error = (PlayFabError)httpResult; PlayFabSettings.GlobalErrorHandler?.Invoke(error); return(new PlayFabResult <GetEntityTokenResponse> { Error = error, CustomData = customData }); } var resultRawJson = (string)httpResult; var resultData = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <GetEntityTokenResponse> >(resultRawJson); var result = resultData.data; PlayFabSettings.EntityToken = result.EntityToken; return(new PlayFabResult <GetEntityTokenResponse> { Result = result, CustomData = customData }); }