public async Task <IActionResult> Claim(Role role) { var client = (Guid)HttpContext.Items[CookieIdentificationMiddleware.ClientIdKey]; var currentRole = _registry.GetRole(client); var owner = _registry.GetOwner(role); var success = true; if (currentRole == role) { if (role != Role.Reader) { success = TryDefend(client, role); } } else if (!owner.HasValue) { _registry.SetClientRole(client, role); } else { success = await TryClaimThroughDisputeAsync(client, owner.Value, role); } if (success) { return(Ok()); } else { return(Conflict("The role is occupied.")); } }
public void ShoudStoreClientRole(Role role) { _registry.SetClientRole(_client1, role); var newRole = _registry.GetRole(_client1); newRole.ShouldBe(role); }
private void Resolve(Guid winner, Guid loser) { _isResolved = true; _registry.SetClientRole(winner, Role); _registry.SetClientRole(loser, Role.Reader); }