static OxfordHttpWrapper() { var apiConfigHelper = ContainerHelper.Container.Resolve <IAPIConfigurationHelper>(); coding_challenge_api_logger = ContainerHelper.Container.Resolve <ICodingChallengeApiLogger>(); var url = apiConfigHelper?.APIConfiguration.OxfordDictionaryAPI.BaseUrl; VerboseLogging = apiConfigHelper?.APIConfiguration.APILogging.VerboseLogging ?? false; if (!string.IsNullOrEmpty(url)) { client = new HttpClient { BaseAddress = new Uri(url) } } ; }
public OxfordApiWrapper(IOxfordHttpWrapper oxfordHttpWrapper, IAPIConfigurationHelper apiConfigurationHelper, ICodingChallengeApiLogger codingChallengeApiLogger) { _oxfordHttpWrapper = oxfordHttpWrapper; _apiConfigurationHelper = apiConfigurationHelper; _codingChallengeApiLogger = codingChallengeApiLogger; }
public PixabayApiWrapper(IPixabayHttpWrapper pixabayHttpWrapper, IAPIConfigurationHelper apiConfigurationHelper, ICodingChallengeApiLogger codingChallengeApiLogger) { _pixabayHttpWrapper = pixabayHttpWrapper; _apiConfigurationHelper = apiConfigurationHelper; _codingChallengeApiLogger = codingChallengeApiLogger; }
public static T DeserializeHttpMessage <T>(this HttpResponseMessage response, ICodingChallengeApiLogger codingChallengeApiLogger, bool testing = false, bool verboseLogging = false) where T : class { try { T result; if (verboseLogging) { if (response.StatusCode == HttpStatusCode.InternalServerError) { codingChallengeApiLogger.Log500Response(); } dynamic actualResponseObject; if (testing) { actualResponseObject = JsonConvert.DeserializeObject <dynamic>( response.Content.ReadAsStringAsync().Result.Replace(REMOVE, string.Empty)); } else { actualResponseObject = response.Content.ReadAsAsync <dynamic>().Result; } codingChallengeApiLogger.LogActualResponse(actualResponseObject, response.StatusCode, true); var objString = JsonConvert.SerializeObject(actualResponseObject); result = JsonConvert.DeserializeObject <T>(objString); codingChallengeApiLogger.LogExpectedResponse(result, true); } else { if (testing) { result = JsonConvert.DeserializeObject <T>( response.Content.ReadAsStringAsync().Result.Replace(REMOVE, string.Empty)); } else { result = response.Content.ReadAsAsync <T>().Result; } } if (result is IStatus statusObject) { statusObject.StatusCode = response.StatusCode; } return(result); } catch (Exception ex) { codingChallengeApiLogger.Log().Error(THERE_WAS_AN_ISSUE_LOGGING_THIS_MESSAGE + ex.GetInnerMostException().Message); return(null); } }