private async Task <T> GetDbAsync <T>(string route) { // Try to get a cached result first if (GetDbCache.TryGetCache(route, out T value)) { return(value); } // T result = default(T); using (var handler = new HttpClientHandler()) { handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => { return(true); }; using (var client = new HttpClient(handler)) { client.DefaultRequestHeaders.Add("Accept", "application/json"); try { if (!string.IsNullOrEmpty(_dbAccessToken)) { client.DefaultRequestHeaders.Add("Authorization", _dbAccessToken); } var response = await client.GetAsync($"{_settings.DatabaseUrl}/{route}"); // Deserialize on success if (response.IsSuccessStatusCode) { result = JsonConvert.DeserializeObject <T>(await response.Content.ReadAsStringAsync()); } // Update cached value GetDbCache.UpdateCache(route, result, _settings.CacheDuration); } catch (Exception e) { Logger.Error(e); result = default(T); } } } return(result); }
private async Task <HttpResponseMessage> GetDbAsync(string route) { // Try to get a cached result first if (GetDbCache.TryGetCache(route, out HttpResponseMessage value)) { return(value); } // HttpResponseMessage result = null; using (var handler = new HttpClientHandler()) { handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => { return(true); }; using (var client = new HttpClient(handler)) { if (!string.IsNullOrEmpty(_dbAccessToken)) { client.DefaultRequestHeaders.Add("Authorization", _dbAccessToken); } client.DefaultRequestHeaders.Add("Accept", "application/json"); try { result = await client.GetAsync($"{_settings.DatabaseUrl}/{route}"); // Update cached value GetDbCache.UpdateCache(route, result, _settings.CacheDuration); } catch (Exception e) { Logger.Error(e); result = null; } } } return(result); }