示例#1
0
        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);
        }
示例#2
0
        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);
        }