Ejemplo n.º 1
0
        public UserDetails GetUserDetails()
        {
            var umbracoFlareConfigModel = _configurationService.LoadConfigurationFile();
            var userDetails             = new UserDetails();

            if (!umbracoFlareConfigModel.ApiKey.HasValue() || !umbracoFlareConfigModel.AccountEmail.HasValue())
            {
                return(userDetails);
            }

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(ApplicationConstants.ContentTypeApplicationJson));
                const string url = CloudflareApiBaseUrl + CloudflareApiUserEndpoint;

                var request = new HttpRequestMessage
                {
                    RequestUri = new Uri(url),
                    Method     = HttpMethod.Get
                };

                AddRequestHeaders(request);

                try
                {
                    var responseContent = client.SendAsync(request).Result.Content;
                    userDetails = responseContent.ReadAsAsync <UserDetails>().Result;

                    if (userDetails.Success)
                    {
                        return(userDetails);
                    }
                }
                catch (Exception e)
                {
                    _umbracoLoggingService.LogError <ICloudflareApiClient>($"Could not get the user details for user email {umbracoFlareConfigModel.AccountEmail}", e);
                    return(userDetails);
                }

                _umbracoLoggingService.LogWarn <ICloudflareApiClient>($"The request for <<GetUserDetails>> was not successful for user email {umbracoFlareConfigModel.AccountEmail}");

                return(userDetails);
            }
        }
        public UmbracoFlareConfigModel LoadConfigurationFile()
        {
            try
            {
                var configurationFilePath = HttpContext.Current.Server.MapPath(ApplicationConstants.ConfigurationFile.ConfigurationFilePath);
                var serializer            = new XmlSerializer(typeof(UmbracoFlareConfigModel));

                using (var reader = new StreamReader(configurationFilePath))
                {
                    return((UmbracoFlareConfigModel)serializer.Deserialize(reader));
                }
            }
            catch (Exception e)
            {
                _umbracoLoggingService.LogError <IConfigurationService>($"Could not load the file in this path {ApplicationConstants.ConfigurationFile.ConfigurationFilePath}", e);
            }

            return(new UmbracoFlareConfigModel());
        }
        public Zone GetZoneFilteredByDomain(string domainUrl)
        {
            var allowedZones             = GetAllowedCloudflareZones();
            var filteredZonesByDomainUrl = allowedZones.Where(x => domainUrl.Contains(x.Name)).ToList();

            if (filteredZonesByDomainUrl.HasAny())
            {
                return(filteredZonesByDomainUrl.FirstOrDefault());
            }

            var noZoneException = new Exception($"Could not retrieve the zone from cloudflare with the domain of {domainUrl}");

            _umbracoLoggingService.LogError <IUmbracoFlareDomainService>(noZoneException.Message, noZoneException);

            return(null);
        }