private void Send(string key, string value, EvaluationDataType dataType, Action <bool> onComplete = null) { if (SUGARManager.UserSignedIn) { var data = new EvaluationDataRequest { CreatingActorId = SUGARManager.CurrentUser.Id, GameId = SUGARManager.GameId, Key = key, Value = value, EvaluationDataType = dataType }; SUGARManager.client.GameData.AddAsync(data, response => { Debug.Log("GameData Sending Success: True"); onComplete?.Invoke(true); }, exception => { Debug.LogError($"GameData Sending Success: False. Exception: {exception}"); onComplete?.Invoke(false); }); } else { onComplete?.Invoke(false); } }
public void CanGetGlobalLeaderboardStandings() { var key = "Leaderboard_CanGetGlobalLeaderboardStandings"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var gameData = new EvaluationDataRequest { Key = key, EvaluationDataType = EvaluationDataType.Long, CreatingActorId = loggedInAccount.User.Id, Value = "5", GameId = Platform.GlobalGameId }; Fixture.SUGARClient.GameData.Add(gameData); var standingsRequest = new LeaderboardStandingsRequest { LeaderboardToken = key, LeaderboardFilterType = LeaderboardFilterType.Top, PageLimit = 10, PageOffset = 0, GameId = Platform.GlobalGameId, MultiplePerActor = false }; var standingsResponse = Fixture.SUGARClient.Leaderboard.CreateGetLeaderboardStandings(standingsRequest); Assert.Equal(1, standingsResponse.Count()); Assert.Equal(loggedInAccount.User.Name, standingsResponse.First().ActorName); }
public void CannotGetGroupMembersLeaderboardStandingsWithIncorrectActorType() { var key = "Leaderboard_CannotGetGroupMembersWithIncorrectActorType"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var gameData = new EvaluationDataRequest { Key = key, EvaluationDataType = EvaluationDataType.Long, CreatingActorId = loggedInAccount.User.Id, Value = "5", GameId = game.Id }; Fixture.SUGARClient.GameData.Add(gameData); var standingsRequest = new LeaderboardStandingsRequest { LeaderboardToken = key, GameId = game.Id, ActorId = loggedInAccount.User.Id, LeaderboardFilterType = LeaderboardFilterType.GroupMembers, PageLimit = 10, PageOffset = 0 }; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.Leaderboard.CreateGetLeaderboardStandings(standingsRequest)); }
public void CanGetGlobalGameData() { var key = "GameData_CanGetGameDataWithoutGameId"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var evaluationDataRequest = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = Platform.GlobalGameId, Key = key, Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; var response = Fixture.SUGARClient.GameData.Add(evaluationDataRequest); var get = Fixture.SUGARClient.GameData.Get(loggedInAccount.User.Id, Platform.GlobalGameId, new[] { key }); Assert.Equal(1, get.Count()); Assert.Equal(get.First().CreatingActorId, response.CreatingActorId); Assert.Equal(get.First().GameId, response.GameId); Assert.Equal(get.First().Key, response.Key); Assert.Equal(get.First().Value, response.Value); Assert.Equal(get.First().EvaluationDataType, response.EvaluationDataType); }
public static ActorData ToActorDataModel(this EvaluationDataRequest dataContract) { return(new ActorData { ActorId = dataContract.CreatingActorId.Value, GameId = dataContract.GameId.Value, Key = dataContract.Key, Value = dataContract.Value, EvaluationDataType = dataContract.EvaluationDataType.Value }); }
public static EvaluationData ToMatchDataModel(this EvaluationDataRequest contract) { return(new EvaluationData { GameId = contract.GameId.Value, MatchId = contract.MatchId, ActorId = contract.CreatingActorId.Value, Key = contract.Key, Value = contract.Value, EvaluationDataType = contract.EvaluationDataType.Value, Category = EvaluationDataCategory.MatchData }); }
public async Task <IActionResult> Add([FromBody] EvaluationDataRequest newData) { if ((await _authorizationService.AuthorizeAsync(User, newData.CreatingActorId, HttpContext.ScopeItems(ClaimScope.Group))).Succeeded || (await _authorizationService.AuthorizeAsync(User, newData.CreatingActorId, HttpContext.ScopeItems(ClaimScope.User))).Succeeded || (await _authorizationService.AuthorizeAsync(User, newData.GameId, HttpContext.ScopeItems(ClaimScope.Game))).Succeeded) { var data = newData.ToGameDataModel(); _gameDataCoreController.Add(data); var dataContract = data.ToContract(); return(new ObjectResult(dataContract)); } return(Forbid()); }
/// <summary> /// Create a new GameData record. /// </summary> /// <param name="data"><see cref="EvaluationDataRequest"/> object that holds the details of the new GameData.</param> /// <returns>A <see cref="EvaluationDataResponse"/> containing the new GameData details.</returns> public EvaluationDataResponse Add(EvaluationDataRequest data) { if (data.Key == null) { throw new ArgumentException("No Key provided. Keys must be non-empty strings containing only alpha-numeric characters and underscores."); } if (!RegexUtil.IsAlphaNumericUnderscoreNotEmpty(data.Key)) { throw new ArgumentException($"Invalid Key {data.Key}. Keys must be non-empty strings containing only alpha-numeric characters and underscores."); } var query = GetUriBuilder(ControllerPrefix).ToString(); return(Post <EvaluationDataRequest, EvaluationDataResponse>(query, data)); }
public void CannotCreateWithoutGameId() { var key = "GameData_CanCreateWithoutGameId"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var evaluationDataRequest = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, Key = key, Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); }
public void CantCreateWithInValidKey(string dataKey) { var key = "GameData_CantCreateWithInValidKey"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var evaluationDataRequest = new EvaluationDataRequest { Key = dataKey, Value = "TestValue", EvaluationDataType = EvaluationDataType.String, CreatingActorId = loggedInAccount.User.Id }; // Act Assert Assert.Throws <ArgumentException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); }
public void CanGetGameDataByMultipleKeys() { var key = "GameData_CanGetGameDataByMultipleKeys"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var evaluationDataRequestOne = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "1", Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; var evaluationDataRequestTwo = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "2", Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; var evaluationDataRequestThree = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "3", Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; Fixture.SUGARClient.GameData.Add(evaluationDataRequestOne); Fixture.SUGARClient.GameData.Add(evaluationDataRequestTwo); Fixture.SUGARClient.GameData.Add(evaluationDataRequestThree); var get = Fixture.SUGARClient.GameData.Get(loggedInAccount.User.Id, game.Id, new[] { evaluationDataRequestOne.Key, evaluationDataRequestTwo.Key, evaluationDataRequestThree.Key }); Assert.Equal(3, get.Count()); foreach (var g in get) { Assert.Equal("Test Value", g.Value); } }
public void CannotGetGameDataWithoutActorId() { var key = "GameData_CannotGetGameDataWithoutActorId"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var evaluationDataRequest = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key, Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; Fixture.SUGARClient.GameData.Add(evaluationDataRequest); Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Get(Platform.GlobalActorId, game.Id, new[] { key })); }
public void CanCreateWithValidKey(string dataKey) { var key = "GameData_CanCreateWithValidKey"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); // Act var evaluationDataRequest = new EvaluationDataRequest { Key = dataKey, GameId = Platform.GlobalGameId, Value = "TestValue", EvaluationDataType = EvaluationDataType.String, CreatingActorId = loggedInAccount.User.Id }; var response = Fixture.SUGARClient.GameData.Add(evaluationDataRequest); // Assert Assert.NotNull(response); }
public void CannotCreateWithMismatchedData() { var key = "GameData_CannotCreateWithMismatchedData"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var evaluationDataRequest = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key, Value = "Test Value", EvaluationDataType = EvaluationDataType.Float }; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); evaluationDataRequest.EvaluationDataType = EvaluationDataType.Long; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); evaluationDataRequest.EvaluationDataType = EvaluationDataType.Boolean; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); evaluationDataRequest.EvaluationDataType = EvaluationDataType.Float; evaluationDataRequest.Value = "True"; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); evaluationDataRequest.EvaluationDataType = EvaluationDataType.Long; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); evaluationDataRequest.EvaluationDataType = EvaluationDataType.Boolean; evaluationDataRequest.Value = "2"; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.GameData.Add(evaluationDataRequest)); }
public async Task <IActionResult> Add([FromBody] EvaluationDataRequest newData) { if ((await _authorizationService.AuthorizeAsync(User, newData.CreatingActorId, HttpContext.ScopeItems(ClaimScope.Group))).Succeeded || (await _authorizationService.AuthorizeAsync(User, newData.CreatingActorId, HttpContext.ScopeItems(ClaimScope.User))).Succeeded) { var data = newData.ToActorDataModel(); var exists = _actorDataCoreController.KeyExists(data.GameId, data.ActorId, data.Key); if (exists) { var existing = _actorDataCoreController.Get(data.GameId, data.ActorId, new[] { data.Key }); var firstData = existing.ElementAt(0); data.Id = firstData.Id; _actorDataCoreController.Update(data); } else { _actorDataCoreController.Add(data); } var dataContract = data.ToContract(); return(new ObjectResult(dataContract)); } return(Forbid()); }
public void CanCreate() { var key = "GameData_CanCreate"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var evaluationDataRequest = new EvaluationDataRequest { CreatingActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key, Value = "Test Value", EvaluationDataType = EvaluationDataType.String }; var response = Fixture.SUGARClient.GameData.Add(evaluationDataRequest); Assert.Equal(evaluationDataRequest.CreatingActorId, response.CreatingActorId); Assert.Equal(evaluationDataRequest.GameId, response.GameId); Assert.Equal(evaluationDataRequest.Key, response.Key); Assert.Equal(evaluationDataRequest.Value, response.Value); Assert.Equal(evaluationDataRequest.EvaluationDataType, response.EvaluationDataType); }
public void CanGetMultipleLeaderboardStandingsForActor() { var key = "Leaderboard_CanGetMultipleLeaderboardStandingsForActor"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var count = 10; for (var i = 1; i < count + 1; i++) { var gameData = new EvaluationDataRequest { Key = key, EvaluationDataType = EvaluationDataType.Long, CreatingActorId = loggedInAccount.User.Id, Value = i.ToString(), GameId = game.Id }; Fixture.SUGARClient.GameData.Add(gameData); } var standingsRequest = new LeaderboardStandingsRequest { LeaderboardToken = key, LeaderboardFilterType = LeaderboardFilterType.Top, PageLimit = 10, PageOffset = 0, GameId = game.Id, MultiplePerActor = true }; var standingsResponse = Fixture.SUGARClient.Leaderboard.CreateGetLeaderboardStandings(standingsRequest); Assert.Equal(count, standingsResponse.Count()); Assert.Equal(count.ToString(), standingsResponse.First().Value); }
public void AddAsync(EvaluationDataRequest data, Action <EvaluationDataResponse> onSuccess, Action <Exception> onError) { AsyncRequestController.EnqueueRequest(() => Add(data), onSuccess, onError); }
/// <summary> /// Create a new Match Data record. /// </summary> /// <param name="data"><see cref="EvaluationDataRequest"/> object that holds the details of the new Match Data.</param> /// <returns>A <see cref="EvaluationDataResponse"/> containing the new Match Data details.</returns> public EvaluationDataResponse AddData(EvaluationDataRequest data) { var query = GetUriBuilder(ControllerPrefix).ToString(); return(Post <EvaluationDataRequest, EvaluationDataResponse>(query, data)); }