private bool IscdnPropertyValid()
        {
            if (cdnPropertiesModel == null)
            {
                cdnPropertiesModel = cdnHelper.GetCdnModelForSite(false);
            }

            return(cdnPropertiesModel != null);
        }
 public AwsS3CdnServerHandler()
 {
     cdnHelper          = ServiceLocator.ServiceProvider.GetService <ICdnHelper>();
     cdnPropertiesModel = cdnHelper.GetCdnModelForSite(false);
 }
Beispiel #3
0
        public CdnPropertiesModel GetCdnModelForSite(bool updateSiteProperty = true, Item item = null)
        {
            CdnPropertiesModel cloudFrontCachevalue = CustomCacheManager.GetCache <CdnPropertiesModel>(Constants.Cache.CloudFrontKey);

            if (cloudFrontCachevalue != null && !string.IsNullOrEmpty(cloudFrontCachevalue.DefaultCdnDomain))
            {
                if (updateSiteProperty && string.IsNullOrEmpty(Context.Site.Properties[Constants.SiteProperties.CdnDomainUrl]))
                {
                    UpdateSiteCdnDomainUrl(cloudFrontCachevalue.DefaultCdnDomain);
                }
                return(cloudFrontCachevalue);
            }
            var cdnFolder = item == null
                            ? Database.GetDatabase(Constants.Path.MasterDb).GetItem(Constants.Template.CdnModuleItem)
                            : item.Database.GetItem(Constants.Template.CdnModuleItem);

            if (cdnFolder != null && cdnFolder.HasChildren)
            {
                Item awsItem = null;
                awsItem = cdnFolder.GetChildren().FirstOrDefault(f =>
                                                                 f.TemplateName == Constants.Template.CloudFrontTemplate && f.Fields != null &&
                                                                 f.Fields[Constants.TemplateFields.IsEnabled].IsChecked() &&
                                                                 f.Fields[Constants.TemplateFields.EnviromentName].HasValue &&
                                                                 f.Fields[Constants.TemplateFields.DefaultCdnDomain].HasValue &&
                                                                 f.Fields[Constants.TemplateFields.EnviromentName].Value.Split(',')
                                                                 .Any(a =>
                                                                      a.Trim().Equals(WebConfigurationManager.AppSettings["env:define"] ?? string.Empty, StringComparison.OrdinalIgnoreCase)));
                if (awsItem == null)
                {
                    awsItem = cdnFolder.GetChildren().FirstOrDefault(f =>
                                                                     f.TemplateName == Constants.Template.CloudFrontTemplate && f.Fields != null &&
                                                                     f.Fields[Constants.TemplateFields.IsEnabled].IsChecked() && f.Fields[Constants.TemplateFields.DefaultCdnDomain].HasValue &&
                                                                     !f.Fields[Constants.TemplateFields.EnviromentName].HasValue);
                }
                if (awsItem != null)
                {
                    var region = awsItem.GetFieldValue(Constants.TemplateFields.Region);

                    var endPoint = Amazon.RegionEndpoint.EnumerableAllRegions
                                   .FirstOrDefault(f => f.DisplayName.Equals(region, StringComparison.OrdinalIgnoreCase) ||
                                                   f.SystemName.Equals(region, StringComparison.OrdinalIgnoreCase));
                    CdnPropertiesModel model = new CdnPropertiesModel()
                    {
                        CdnType          = CdnType.CloudFront,
                        DefaultCdnDomain = awsItem.GetFieldValue(Constants.TemplateFields.DefaultCdnDomain),
                        IsActive         = true,
                        S3BucketName     = awsItem.GetFieldValue(Constants.TemplateFields.S3BucketName),
                        PublicKey        = awsItem.GetFieldValue(Constants.TemplateFields.PublicKey),
                        SecretKey        = awsItem.GetFieldValue(Constants.TemplateFields.SecretKey),
                        Endpoint         = endPoint
                    };

                    CustomCacheManager.SetCache(Constants.Cache.CloudFrontKey, model);
                    if (updateSiteProperty)
                    {
                        UpdateSiteCdnDomainUrl(cloudFrontCachevalue.DefaultCdnDomain);
                    }
                    return(model);
                }
            }
            return(null);
        }