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"); }
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)); }