public override Task <CreatePartyResponse> CreateParty(CreatePartyRequest request, ServerCallContext context) { var playerId = AuthHeaders.ExtractPlayerId(context); var pit = AuthHeaders.ExtractPit(context); // TODO(iuliaharasim/dom): Move logic specific to party creation in a separate class. PartyDataModel party; try { party = new PartyDataModel(playerId, pit, request.MinMembers, request.MaxMembers, request.Metadata); } catch (ArgumentException exception) { throw new RpcException(new Status(StatusCode.InvalidArgument, exception.Message)); } var leader = party.GetLeader(); using (var memClient = _memoryStoreClientManager.GetClient()) using (var transaction = memClient.CreateTransaction()) { transaction.CreateAll(new List <Entry> { party, leader }); } return(Task.FromResult(new CreatePartyResponse { PartyId = party.Id })); }
public override Task <CreatePartyResponse> CreateParty(CreatePartyRequest request, ServerCallContext context) { var playerId = AuthHeaders.ExtractPlayerId(context); var pit = AuthHeaders.ExtractPit(context); // TODO(iuliaharasim/dom): Move logic specific to party creation in a separate class. PartyDataModel party; try { party = new PartyDataModel(playerId, pit, request.MinMembers, request.MaxMembers, request.Metadata); } catch (ArgumentException exception) { throw new RpcException(new Status(StatusCode.InvalidArgument, exception.Message)); } var leader = party.GetLeader(); using (var memClient = _memoryStoreClientManager.GetClient()) using (var transaction = memClient.CreateTransaction()) { transaction.CreateAll(new List <Entry> { party, leader }); } var eventAttributes = new Dictionary <string, string> { { "partyId", party.Id } }; string[] eventTypes = { "player_created_party", "player_joined_party", "party_created" }; foreach (string eventType in eventTypes) { if (eventType == "party_created") { eventAttributes.Add("partyPhase", party.CurrentPhase.ToString()); } _analytics.Send(eventType, eventAttributes, playerId); } return(Task.FromResult(new CreatePartyResponse { PartyId = party.Id })); }
public void ReturnNotFoundWhenThePartyNoLongerExists() { // Setup the client such that it will claim the party has been deleted between the time of Get<Member> and // Get<PartyDataModel>. _mockMemoryStoreClient.Setup(client => client.GetAsync <Member>(TestPlayerId)).ReturnsAsync(_party.GetLeader()); _mockMemoryStoreClient.Setup(client => client.GetAsync <PartyDataModel>(_party.Id)) .ReturnsAsync((PartyDataModel)null); // Check that a GrpcException as thrown as a result. var context = Util.CreateFakeCallContext(TestPlayerId, Pit); var exception = Assert.ThrowsAsync <RpcException>(() => _partyService.GetPartyByPlayerId(new GetPartyByPlayerIdRequest(), context)); Assert.That(exception.Message, Contains.Substring("not a member of any")); Assert.AreEqual(StatusCode.NotFound, exception.StatusCode); }