public EnterspeedUmbracoConfiguration GetConfiguration()
        {
            if (_configuration != null)
            {
                return(_configuration);
            }

            _configuration = GetConfigurationFromDatabase();

            if (_configuration != null)
            {
                return(_configuration);
            }

            var webConfigEndpoint    = ConfigurationManager.AppSettings["Enterspeed.Endpoint"];
            var webConfigMediaDomain = ConfigurationManager.AppSettings["Enterspeed.MediaDomain"];
            var webConfigApikey      = ConfigurationManager.AppSettings["Enterspeed.Apikey"];

            if (string.IsNullOrWhiteSpace(webConfigEndpoint) || string.IsNullOrWhiteSpace(webConfigApikey))
            {
                return(new EnterspeedUmbracoConfiguration());
            }

            _configuration = new EnterspeedUmbracoConfiguration
            {
                BaseUrl      = webConfigEndpoint?.Trim(),
                ApiKey       = webConfigApikey?.Trim(),
                MediaDomain  = webConfigMediaDomain?.Trim(),
                IsConfigured = true
            };

            return(_configuration);
        }
        public void Save(EnterspeedUmbracoConfiguration configuration)
        {
            if (configuration == null)
            {
                return;
            }

            configuration.IsConfigured = true;
            configuration.MediaDomain  = configuration.MediaDomain.TrimEnd('/');
            if (!configuration.MediaDomain.IsAbsoluteUrl())
            {
                throw new ConfigurationErrorsException(
                          "Configuration value for Enterspeed.MediaDomain must be absolute url");
            }

            using (var db = ApplicationContext.Current.DatabaseContext.Database)
            {
                // In case of SQL CE we need to see if the config is already existing, so we can update it, or otherwise insert it
                var existingConfig = GetConfigurationFromDatabase();
                if (existingConfig == null)
                {
                    db.Insert(MapToSchema(configuration));
                }
                else
                {
                    db.Save(MapToSchema(configuration));
                }

                db.CompleteTransaction();
                db.CloseSharedConnection();
            }

            _configuration = configuration;
        }
示例#3
0
        public HttpResponseMessage SaveConfiguration(EnterspeedUmbracoConfiguration configuration)
        {
            if (string.IsNullOrEmpty(configuration?.ApiKey) || string.IsNullOrEmpty(configuration?.BaseUrl))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new Response
                {
                    Status = HttpStatusCode.BadRequest,
                    Success = false,
                    Message = "Apikey or url is empty"
                }));
            }

            if (string.IsNullOrWhiteSpace(configuration.MediaDomain))
            {
                configuration.MediaDomain = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
            }

            var response = TestConnection(configuration);

            if (!response.Success)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }

            try
            {
                _enterspeedConfigurationService.Save(configuration);
            }
            catch (ConfigurationErrorsException exception)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new Response
                {
                    Status = HttpStatusCode.BadRequest,
                    Success = false,
                    Message = exception.Message,
                    Exception = exception
                }));
            }

            _enterspeedConnection.Flush();

            return(Request.CreateResponse(HttpStatusCode.OK, new Response
            {
                Status = HttpStatusCode.OK,
                Success = true
            }));
        }
        private EnterspeedConfigurationSchema MapToSchema(EnterspeedUmbracoConfiguration config)
        {
            if (config == null)
            {
                return(null);
            }

            return(new EnterspeedConfigurationSchema
            {
                Id = 1, // Default 1
                ApiKey = config.ApiKey,
                ConnectionTimeout = config.ConnectionTimeout,
                MediaDomain = config.MediaDomain,
                BaseUrl = config.BaseUrl,
                IngestVersion = config.IngestVersion,
            });
        }
        public void Save(EnterspeedUmbracoConfiguration configuration)
        {
            if (configuration == null)
            {
                return;
            }

            configuration.MediaDomain = configuration.MediaDomain.TrimEnd('/');
            if (!configuration.MediaDomain.IsAbsoluteUrl())
            {
                throw new ConfigurationErrorsException(
                          "Configuration value for Enterspeed.MediaDomain must be absolute url");
            }

            configuration.IsConfigured = true;

            _keyValueService.SetValue(_configurationDatabaseKey, JsonConvert.SerializeObject(configuration));
            _configuration = configuration;
        }