public async Task GetFamilyNameV2()
        {
            // Arrange
            string name = "alex";

            // Act
            var result = await proxy.FamilyName.GetWithHttpMessagesAsync(name);

            // Assert
            Assert.IsNotNull(result, "Should have received a response.");
            Assert.AreEqual(HttpStatusCode.OK, result.Response.StatusCode, "Status code should be 200 OK");
            GenderizeResult response = await result.Response.Content.ReadAsAsync <GenderizeResult>();

            Assert.AreEqual(name, response.Name, "Response body should contain original name");
        }
Exemplo n.º 2
0
        public async Task <ActionResult <FamilyProfile> > Get(string name)
        {
            GenderizeResult result = null;
            FamilyProfile   profile;

            try
            {
                string baseUrl = genderizeOptions.Value.BaseUrl;
                string key     = genderizeOptions.Value.DeveloperApiKey;

                logger.LogInformation("Acquiring name details for {FamilyName}.", name);

                result = await genderizeClient.GetGenderForName(name, key);

                Gender gender;
                profile = new FamilyProfile()
                {
                    Name   = name,
                    Gender = Enum.TryParse <Gender>(result.Gender, true, out gender)
                        ? gender : Gender.Unknown
                };
            }
            catch (HttpRequestException ex)
            {
                logger.LogWarning(ex, "Http request failed.");
                return(StatusCode(StatusCodes.Status502BadGateway, "Failed request to external resource."));
            }
            catch (TimeoutRejectedException ex)
            {
                logger.LogWarning(ex, "Timeout occurred when retrieving details for {FamilyName}.", name);
                return(StatusCode(StatusCodes.Status504GatewayTimeout, "Timeout on external web request."));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Unknown exception occurred while retrieving gender details.");

                // Exception shielding for all other exceptions
                return(StatusCode(StatusCodes.Status500InternalServerError, "Request could not be processed."));
            }
            return(Ok(profile));
        }