コード例 #1
0
        /// <summary>
        ///     Returns the ConfigurationDefinition for the Model Manager.
        /// </summary>
        /// <returns>The ConfigurationDefinition for the Model Manager.</returns>
        public static IConfigurationDefinition GetConfigurationDefinition()
        {
            ConfigurationDefinition retVal = new ConfigurationDefinition();

            retVal.Form   = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]";
            retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}";
            retVal.Model  = typeof(SecurityManagerConfiguration);

            SecurityManagerConfiguration config = new SecurityManagerConfiguration();

            config.SessionLength        = SecurityConstants.DefaultSessionLength;
            config.SlidingSessions      = SecurityConstants.DefaultSlidingSessions;
            config.SessionPurgeInterval = SecurityConstants.DefaultSessionPurgeInterval;

            config.Users.Add(new User(
                                 SecurityConstants.DefaultUserName,
                                 SecurityConstants.DefaultUserDisplayName,
                                 SecurityConstants.DefaultUserEmail,
                                 SecurityConstants.DefaultUserPasswordHash,
                                 Role.Administrator));

            retVal.DefaultConfiguration = config;

            return(retVal);
        }
コード例 #2
0
        public void IsValidInvalidDefault()
        {
            ConfigurationDefinition config = new ConfigurationDefinition("form", "{ \"schema\": \"\" }", typeof(int), "test");

            IResult <bool> result = config.IsValid();

            Assert.False(result.ReturnValue);
            Assert.True(result.GetLastError().Contains("Default"));
        }
コード例 #3
0
        public void IsValidInvalidSchema()
        {
            ConfigurationDefinition config = new ConfigurationDefinition("{ \"form\": \"\" }", "schema", typeof(int), 1);

            IResult <bool> result = config.IsValid();

            Assert.False(result.ReturnValue);
            Assert.True(result.GetLastError().Contains("Schema"));
        }
コード例 #4
0
        public void IsValidInvalidModel()
        {
            ConfigurationDefinition config = new ConfigurationDefinition("form", "{ \"schema\": \"\" }", null, null);

            IResult <bool> result = config.IsValid();

            Assert.False(result.ReturnValue);
            Assert.True(result.GetLastError().Contains("Model"));
        }
コード例 #5
0
        public void Constructor()
        {
            ConfigurationDefinition config = new ConfigurationDefinition();

            Assert.IsType <ConfigurationDefinition>(config);

            config = new ConfigurationDefinition("form", "schema", typeof(int), 1);

            Assert.IsType <ConfigurationDefinition>(config);
        }
コード例 #6
0
        public void Properties()
        {
            ConfigurationDefinition config = new ConfigurationDefinition("form", "schema", typeof(int), 1);

            Assert.IsType <ConfigurationDefinition>(config);
            Assert.Equal("form", config.Form);
            Assert.Equal("schema", config.Schema);
            Assert.Equal(typeof(int), config.Model);
            Assert.Equal(1, config.DefaultConfiguration);
        }
コード例 #7
0
        public string Write(ref ConfigurationDefinition configurationDefinition)
        {
            var settings = new JsonSerializerOptions
            {
                DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
                IgnoreReadOnlyFields   = true
            };

            var json = JsonSerializer.Serialize(configurationDefinition, settings);

            return(json);
        }
コード例 #8
0
        public string Write(ref ConfigurationDefinition configurationDefinition)
        {
            var serializer = new Serializer(new SerializerSettings
            {
                IgnoreNulls  = true,
                DefaultStyle = SharpYaml.YamlStyle.Block,
                EmitAlias    = false,
            });

            var yaml = serializer.Serialize(configurationDefinition);

            return(yaml);
        }
コード例 #9
0
    public static RequestDefinitionItemSet?ToDefinitionSet(ref ConfigurationDefinition configurationDefinition)
    {
        if (!ConfigurationDefinitionExtensions.HasData(ref configurationDefinition))
        {
            return(null);
        }

        var items = configurationDefinition.Map !.Select(ToRequestDefinition);

        return(new RequestDefinitionItemSet(
                   configurationDefinition.Info,
                   items.ToArray()
                   ));
    }
コード例 #10
0
        /// <summary>
        ///     The GetConfigurationDefinition method is static and returns the ConfigurationDefinition for the Endpoint.
        ///
        ///     This method is necessary so that the configuration defintion can be registered with the ConfigurationManager prior
        ///     to any instances being created. This method MUST be implemented, however it is not possible to specify static
        ///     methods in an interface, so implementing IConfigurable will not enforce this.
        /// </summary>
        /// <returns>The ConfigurationDefinition for the Endpoint.</returns>
        public static ConfigurationDefinition GetConfigurationDefinition()
        {
            ConfigurationDefinition retVal = new ConfigurationDefinition();

            // to create the form and schema strings, visit http://schemaform.io/examples/bootstrap-example.html use the example to
            // create the desired form and schema, and ensure that the resulting model matches the model for the endpoint. When you
            // are happy with the json from the above url, visit http://www.freeformatter.com/json-formatter.html#ad-output and
            // paste in the generated json and format it using the "JavaScript escaped" option. Paste the result into the methods below.

            retVal.Form   = "[\"templateURL\",{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"Save\"}]";
            retVal.Schema = "{\"type\":\"object\",\"title\":\"XMLEndpoint\",\"properties\":{\"templateURL\":{\"title\":\"Template URL\",\"type\":\"string\"}},\"required\":[\"templateURL\"]}";

            // this will always be typeof(YourConfiguration/ModelObject)
            retVal.Model = typeof(ExampleConnectorConfiguration);
            return(retVal);
        }
コード例 #11
0
        /// <summary>
        ///     Returns the ConfigurationDefinition for the Event Manager.
        /// </summary>
        /// <returns>The ConfigurationDefinition for the Event Manager.</returns>
        public static ConfigurationDefinition GetConfigurationDefinition()
        {
            ConfigurationDefinition retVal = new ConfigurationDefinition();

            retVal.Form   = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]";
            retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}";
            retVal.Model  = typeof(EventManagerConfiguration);

            EventManagerConfiguration config = new EventManagerConfiguration();

            config.Events.Add("Hello World!");

            retVal.DefaultConfiguration = config;

            return(retVal);
        }
コード例 #12
0
        public void Serialize()
        {
            var config = new ConfigurationDefinition();

            config.Info = "Test data";
            config.Map  = new List <RequestConfigurationDefinition>
            {
                new RequestConfigurationDefinition
                {
                    Url         = "/probe",
                    Status      = 200,
                    Delay       = 100,
                    Description = "Probe endpoint"
                },
                new RequestConfigurationDefinition
                {
                    Url         = "/swagger",
                    Status      = 200,
                    Delay       = 200,
                    Description = "Swagger endpoint"
                },
                new RequestConfigurationDefinition
                {
                    Url         = "/order",
                    Status      = 201,
                    Delay       = 300,
                    Description = "Order endpoint",
                    Payload     = "{\"paymentId\":\"@guid\"}",
                    Headers     = new Dictionary <string, string>
                    {
                        { "Location", "/probe?a=b" },
                        { "Authorization", "Bearer aaa" }
                    }
                }
            };

            var serializer = new SharpYaml.Serialization.Serializer(new SharpYaml.Serialization.SerializerSettings
            {
                EmitAlias         = false,
                EmitShortTypeName = false,
                DefaultStyle      = SharpYaml.YamlStyle.Block,
            });

            var result = serializer.Serialize(config);

            result.Should().NotBeNull();
        }
コード例 #13
0
        /// <summary>
        ///     Registers the supplied Type with the Configuration Manager.
        /// </summary>
        /// <remarks>When called during application startup, throwExceptionOnFailure should be set to true.</remarks>
        /// <param name="type">The Type to register.</param>
        /// <param name="throwExceptionOnFailure">If true, throws an exception on failure.</param>
        /// <returns>A Result containing the result of the operation.</returns>
        /// <exception cref="ConfigurationRegistrationException">Thrown when the specified Type is fails to be registered.</exception>
        public IResult RegisterType(Type type, bool throwExceptionOnFailure = false)
        {
            logger.EnterMethod(xLogger.Params(type, throwExceptionOnFailure));
            Result retVal = new Result();

            Result <bool> checkResult = IsConfigurable(type);

            // ensure the provided Type is configurable.
            if (!checkResult.ReturnValue)
            {
                retVal.AddError("The Type '" + type.Name + "' could not be registered: " + checkResult.GetLastError());
            }
            else
            {
                // the type is configurable; try to get the configuration definition
                try
                {
                    ConfigurationDefinition typedef = (ConfigurationDefinition)type.GetMethod("GetConfigurationDefinition").Invoke(null, null);
                    if (typedef == default(ConfigurationDefinition))
                    {
                        retVal.AddError("The ConfigurationDefinition retrieved from the supplied type is invalid.");
                    }
                    else
                    {
                        retVal = RegisterType(type, typedef);
                    }
                }
                catch (Exception ex)
                {
                    retVal.AddError("Exception thrown while registering the type: " + ex);
                }
            }

            if (throwExceptionOnFailure && retVal.ResultCode == ResultCode.Failure)
            {
                throw new ConfigurationRegistrationException("Failed to register the type '" + type.Name + "' for configuration.");
            }

            logger.ExitMethod(retVal);
            return(retVal);
        }
コード例 #14
0
        /// <summary>
        ///     Registers the supplied Type with the Configuration Manager using the supplied ConfigurationDefinition.
        /// </summary>
        /// <param name="type">The Type to register.</param>
        /// <param name="definition">The ConfigurationDefinition with which to register the Type.</param>
        /// <returns>A Result containing the result of the operation.</returns>
        private Result RegisterType(Type type, ConfigurationDefinition definition)
        {
            logger.EnterMethod(xLogger.Params(type, definition));
            logger.Debug("Registering type '" + type.Name + "'...");

            Result retVal = new Result();

            // check to ensure that the type hasn't already been registered
            if (!RegisteredTypes.ContainsKey(type))
            {
                RegisteredTypes.Add(type, definition);
                logger.Debug("Registered type '" + type.Name + "' for configuration.");
            }
            else
            {
                retVal.AddWarning("The Type '" + type.Name + "' has already been registered.  Ignoring.");
            }

            retVal.LogResult(logger.Debug);
            logger.ExitMethod(retVal);
            return(retVal);
        }
コード例 #15
0
        /// <summary>
        ///     Returns the ConfigurationDefinition for the Type.
        /// </summary>
        /// <returns>The ConfigurationDefinition for the Type.</returns>
        public static IConfigurationDefinition GetConfigurationDefinition()
        {
            ConfigurationDefinition retVal = new ConfigurationDefinition();

            retVal.Form   = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]";
            retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}";
            retVal.Model  = typeof(PluginManagerConfiguration);

            // create the default configuration
            PluginManagerConfiguration config = new PluginManagerConfiguration();

            config.Instances = new List <PluginManagerConfigurationPluginInstance>();

            PluginManagerConfigurationPluginInstance sim = new PluginManagerConfigurationPluginInstance();

            sim.InstanceName = "Simulation";
            sim.AssemblyName = "OpenIIoT.Plugin.Connector.Simulation";

            config.Instances.Add(sim);

            retVal.DefaultConfiguration = config;

            return(retVal);
        }
コード例 #16
0
        public void IsValid()
        {
            ConfigurationDefinition config = new ConfigurationDefinition("{ \"form\": \"\" }", "{ \"schema\": \"\" }", typeof(int), 1);

            Assert.True(config.IsValid().ReturnValue);
        }