Example #1
0
        private void GetObjects1Continued(PlayFabResult <GetObjectsResponse> result, UUnitTestContext testContext, string failMessage)
        {
            // testContext.IntEquals(result.Result.Objects.Count, 1);
            // testContext.StringEquals(result.Result.Objects[0].ObjectName, TEST_DATA_KEY);

            _testInteger = 0;
            if (result.Result.Objects.Count == 1 && result.Result.Objects[TEST_DATA_KEY].ObjectName == TEST_DATA_KEY)
            {
                int.TryParse(result.Result.Objects[TEST_DATA_KEY].EscapedDataObject, out _testInteger);
            }

            var request = new SetObjectsRequest
            {
                Entity = new DataModels.EntityKey
                {
                    Id   = PlayFabSettings.staticPlayer.EntityId,
                    Type = PlayFabSettings.staticPlayer.EntityType,
                },
                Objects = new List <SetObject>
                {
                    new SetObject
                    {
                        DataObject = _testInteger,
                        ObjectName = TEST_DATA_KEY
                    }
                }
            };
            var eachTask = dataApi.SetObjectsAsync(request, null, testTitleData.extraHeaders);

            ContinueWithContext(eachTask, testContext, SetObjectsContinued, true, "SetObjects failed", false);
        }
        /// <summary>
        /// Sets objects on an entity's profile.
        /// </summary>
        public async Task <PlayFabResult <SetObjectsResponse> > SetObjectsAsync(SetObjectsRequest 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("/Object/SetObjects", request, "X-EntityToken", PlayFabSettings.staticPlayer.EntityToken, extraHeaders, apiSettings);

            if (httpResult is PlayFabError)
            {
                var error = (PlayFabError)httpResult;
                PlayFabSettings.GlobalErrorHandler?.Invoke(error);
                return(new PlayFabResult <SetObjectsResponse> {
                    Error = error, CustomData = customData
                });
            }

            var resultRawJson = (string)httpResult;
            var resultData    = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <SetObjectsResponse> >(resultRawJson);
            var result        = resultData.data;

            return(new PlayFabResult <SetObjectsResponse> {
                Result = result, CustomData = customData
            });
        }
Example #3
0
        /// <summary>
        /// Sets objects on an entity's profile.
        /// </summary>
        public static void SetObjects(SetObjectsRequest request, Action <SetObjectsResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;


            PlayFabHttp.MakeApiCall("/Object/SetObjects", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context);
        }
Example #4
0
    public override void Execute()
    {
        Debug.Log("wehere");
        var data = new Dictionary <string, object>()
        {
            { "Health", 100 },
            { "Mana", 10000 }
        };

        var dataList = new List <SetObject>()
        {
            new SetObject()
            {
                ObjectName = "PlayerData",
                DataObject = data
            }
        };

        if (_args is EntityTestCommandArgs getAccountInfoArgs)
        {
            string entityType = "title_player_account";

            var request = new SetObjectsRequest
            {
                Entity = new PlayFab.DataModels.EntityKey
                {
                    Type = entityType,
                    Id   = GameController.Instance.EntityTokens[entityType]
                },
                Objects = dataList
            };

            PlayFabDataAPI.SetObjects(request, OnSetObjects, OnHttpError);
        }
    }
    private void OnGetEntityTokenForSaveBackgroundColor(GetEntityTokenResponse getEntityTokenResponse)
    {
        var data = new Dictionary <string, object>()
        {
            { "R", Camera.main.backgroundColor.r },
            { "G", Camera.main.backgroundColor.g },
            { "B", Camera.main.backgroundColor.b },
            { "A", Camera.main.backgroundColor.a },
        };

        var dataList = new List <SetObject>()
        {
            new SetObject()
            {
                ObjectName = "BackgroundColor",
                DataObject = data
            }
        };

        var request = new SetObjectsRequest()
        {
            Entity = new PlayFab.DataModels.EntityKey {
                Id = getEntityTokenResponse.Entity.Id, Type = getEntityTokenResponse.Entity.Type
            },
            Objects = dataList
        };

        PlayFabDataAPI.SetObjects(request,
                                  delegate(SetObjectsResponse setObjectsResponse)
        {
            Debug.Log("Background color has been saved");
        },
                                  SharedError.OnSharedError);
    }
Example #6
0
        private void GetObjectCallback1(GetObjectsResponse result)
        {
            var testContext = (UUnitTestContext)result.CustomData;

            _testInteger = 0; // Default if the data isn't present
            foreach (var eachObjPair in result.Objects)
            {
                if (eachObjPair.Key == TEST_OBJ_NAME)
                {
                    int.TryParse(eachObjPair.Value.EscapedDataObject, out _testInteger);
                }
            }

            _testInteger = (_testInteger + 1) % 100; // This test is about the Expected value changing - but not testing more complicated issues like bounds

            var updateRequest = new SetObjectsRequest
            {
                Entity  = _entityKey,
                Objects = new List <SetObject> {
                    new SetObject {
                        ObjectName = TEST_OBJ_NAME, DataObject = _testInteger
                    }
                }
            };

            PlayFabEntityAPI.SetObjects(updateRequest, PlayFabUUnitUtils.ApiActionWrapper <SetObjectsResponse>(testContext, UpdateObjectCallback), PlayFabUUnitUtils.ApiActionWrapper <PlayFabError>(testContext, SharedErrorCallback), testContext);
        }
Example #7
0
        /// <summary>
        /// Sets objects on an entity's profile.
        /// </summary>
        public static void SetObjects(SetObjectsRequest request, Action<SetObjectsResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
        {
            var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
            var callSettings = PlayFabSettings.staticSettings;
            if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");


            PlayFabHttp.MakeApiCall("/Object/SetObjects", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
        }
Example #8
0
        public void UpdateObject(string key, System.Object item, Action <SetObjectsResponse> action = null)
        {
            SetObjectsRequest setObjectsRequest = new SetObjectsRequest();

            setObjectsRequest.Entity = new PlayFab.DataModels.EntityKey()
            {
                Id = CurrentEntity.Id, Type = CurrentEntity.Type
            };
            setObjectsRequest.Objects = new List <SetObject>();
            setObjectsRequest.Objects.Add(new SetObject()
            {
                ObjectName = key, DataObject = JsonConvert.SerializeObject(item)
            });
            PlayFab.PlayFabDataAPI.SetObjects(setObjectsRequest, action, onPlayerObjectError);
        }
Example #9
0
        /// <summary>
        /// Sets objects on an entity's profile.
        /// </summary>
        /// <param name="Entity">The entity to perform this action on. (Required)</param>
        /// <param name="ExpectedProfileVersion">Optional field used for concurrency control. By specifying the previously returned value of ProfileVersion from GetProfile API, you can ensure that the object set will only be performed if the profile has not been updated by any other clients since the version you last loaded. (Optional)</param>
        /// <param name="Objects">Collection of objects to set on the profile. (Required)</param>
        public static Task <SetObjectsResponse> SetObjects(EntityKey Entity, List <SetObject> Objects, int?ExpectedProfileVersion = default,
                                                           PlayFabAuthenticationContext customAuthContext = null, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            SetObjectsRequest request = new SetObjectsRequest()
            {
                Entity  = Entity,
                Objects = Objects,
                ExpectedProfileVersion = ExpectedProfileVersion,
            };

            var context = GetContext(customAuthContext);

            return(PlayFabHttp.MakeApiCallAsync <SetObjectsResponse>("/Object/SetObjects", request,
                                                                     AuthType.EntityToken,
                                                                     customData, extraHeaders, context));
        }
Example #10
0
        public static async Task <dynamic> MakeEntityApiCall(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log)
        {
            /* Create the function execution's context through the request */
            var context = await FunctionContext <dynamic> .Create(req);

            var args = context.FunctionArgument;

            var entityProfile = context.CallerEntityProfile;

            var setObjectRequest = new SetObjectsRequest
            {
                Entity  = ClassConverter <ProfilesModels.EntityKey, DataModels.EntityKey> .Convert(entityProfile.Entity),
                Objects = new List <SetObject>
                {
                    new SetObject
                    {
                        ObjectName = "obj1",
                        DataObject = new
                        {
                            foo   = "some server computed value",
                            prop1 = args["prop1"]
                        }
                    }
                }
            };

            /* Use the ApiSettings and AuthenticationContext provided to the function as context for making API calls. */
            var dataApi = new PlayFabDataInstanceAPI(context.ApiSettings, context.AuthenticationContext);
            /* Execute the entity API request */
            var setObjectsResponse = await dataApi.SetObjectsAsync(setObjectRequest);

            var setObjectsResult = setObjectsResponse.Result.SetResults[0].SetResult;

            return(new
            {
                profile = entityProfile,
                setResult = setObjectsResult
            });
        }
Example #11
0
        void SaveCharacterData(PlayFabCharacterData characterData)
        {
            var dataList = new List <SetObject>();

            dataList.Add(ReturnNewSetObject("CharacterData", SetCharacterInfoData(characterData)));

            PlayFab.DataModels.EntityKey characterEntityKey = CreateKeyForEntity(characterData.CharacterID, "character");

            SetObjectsRequest setCharacterObjectDataRequest = new SetObjectsRequest()
            {
                Entity  = characterEntityKey,
                Objects = dataList
            };

            PlayFabDataAPI.SetObjects(setCharacterObjectDataRequest,
                                      result =>
            {
                if (characterData.IsInitialCharacterData)
                {
                    ushort clientID = ReturnClientConnectionByPlayFabCharacterID(characterData);

                    if (clientID != 9999)
                    {
                        ServerManager.Instance.SendToClient(clientID, Tags.RegisterNewCharacterResponse, new RegisterNewCharacterResponseData(true));
                    }
                    else
                    {
                        ServerManager.Instance.SendToClient(clientID, Tags.RegisterNewCharacterResponse, new RegisterNewCharacterResponseData(false));
                    }
                }
            },
                                      error =>
            {
                Debug.Log($"Failed to save character state data");
                Debug.Log(error.ErrorMessage);
                Debug.Log(error.ErrorDetails);
            });
        }
 /// <summary>
 /// Sets objects on an entity's profile.
 /// </summary>
 public static void SetObjects(SetObjectsRequest request, Action <SetObjectsResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
 {
     PlayFabHttp.MakeApiCall("/Object/SetObjects", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders);
 }
Example #13
0
        public static async Task <SetObjectsResponse> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] FunctionExecutionContext <TestObject> req,
            HttpRequest httpRequest,
            ILogger log)
        {
            string body = await httpRequest.ReadAsStringAsync();

            log.LogInformation($"HTTP POST Body: {body}");

            log.LogInformation($"callingEntityKey: {JsonConvert.SerializeObject(req.CallerEntityProfile.Entity)}");
            log.LogInformation($"currentEntity: {JsonConvert.SerializeObject(req.CallerEntityProfile)}");

            string    name = req.FunctionArgument.ObjectName;
            TestValue val  = req.FunctionArgument.ObjectValue;

            val.PlayerDetails.MapPosition = new[] { _random.NextDouble(), _random.NextDouble(), _random.NextDouble() };

            var titleSettings = new PlayFabApiSettings
            {
                TitleId      = req.TitleAuthenticationContext.Id,
                VerticalName = Settings.Cloud
            };

            var titleAuthContext = new PlayFabAuthenticationContext();

            titleAuthContext.EntityToken = req.TitleAuthenticationContext.EntityToken;

            var setObjectsRequest = new SetObjectsRequest
            {
                Entity = new DataModels.EntityKey
                {
                    Id   = req.CallerEntityProfile.Entity.Id,
                    Type = req.CallerEntityProfile.Entity.Type
                },
                Objects = new System.Collections.Generic.List <SetObject>
                {
                    new SetObject
                    {
                        DataObject = val,
                        ObjectName = name
                    }
                }
            };

            var       dataAPI = new PlayFabDataInstanceAPI(titleSettings, titleAuthContext);
            Stopwatch sw      = Stopwatch.StartNew();
            PlayFabResult <SetObjectsResponse> setObjectsResponse = await dataAPI.SetObjectsAsync(setObjectsRequest);

            sw.Stop();

            if (setObjectsResponse.Error != null)
            {
                throw new InvalidOperationException($"SetObjectsAsync failed: {setObjectsResponse.Error.GenerateErrorReport()}");
            }
            else
            {
                log.LogInformation($"SetObjectsAsync succeeded in {sw.ElapsedMilliseconds}ms");
                log.LogInformation($"SetObjectsAsync returned. ProfileVersion: {setObjectsResponse.Result.ProfileVersion}. NumResults: {setObjectsResponse.Result.SetResults.Count}");
                return(setObjectsResponse.Result);
            }
        }