/// <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
            });
        }
Beispiel #2
0
        /// <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
            });
        }
Beispiel #3
0
        /// <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
            });
        }
Beispiel #6
0
        /// <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
            });
        }