コード例 #1
0
        static Option <BrokerConfig> ParseBrokerConfig(BrokerProperties configuration)
        {
            if (configuration != null)
            {
                throw new NotImplementedException();
            }

            return(Option.None <BrokerConfig>());
        }
コード例 #2
0
        Option <BrokerConfig> ParseBrokerConfig(BrokerProperties properties)
        {
            if (properties != null)
            {
                return(Option.Some(
                           new BrokerConfig(
                               this.ParseBridgeConfig(properties),
                               this.ParseAuthorizationConfig(properties))));
            }

            return(Option.None <BrokerConfig>());
        }
コード例 #3
0
 public EdgeHubDesiredProperties_1_2(
     string schemaVersion,
     IDictionary <string, RouteSpec> routes,
     StoreAndForwardConfiguration storeAndForwardConfiguration,
     BrokerProperties brokerConfiguration)
 {
     this.SchemaVersion = Preconditions.CheckNonWhiteSpace(schemaVersion, nameof(schemaVersion));
     this.Routes        = Preconditions.CheckNotNull(routes, nameof(routes));
     this.StoreAndForwardConfiguration = Preconditions.CheckNotNull(storeAndForwardConfiguration, nameof(storeAndForwardConfiguration));
     // can be null for old versions.
     this.BrokerConfiguration = brokerConfiguration;
 }
コード例 #4
0
        Option <BridgeConfig> ParseBridgeConfig(BrokerProperties properties)
        {
            if (properties.Bridges.Count == 0)
            {
                return(Option.None <BridgeConfig>());
            }

            IList <string> errors = this.validator.ValidateBridgeConfig(properties.Bridges);

            if (errors.Count > 0)
            {
                string message = string.Join("; ", errors);
                throw new InvalidOperationException($"Error validating bridge configuration: {message}");
            }

            return(Option.Some(properties.Bridges));
        }
コード例 #5
0
        /// <summary>
        /// EH Twin and policy definition in the Broker have different json schemas.
        /// This method converts twin schema (BrokerProperties) into broker policy schema (AuthorizationConfig),
        /// and validates it.
        /// </summary>
        Option <AuthorizationConfig> ParseAuthorizationConfig(BrokerProperties properties)
        {
            if (properties.Authorizations.Count == 0)
            {
                return(Option.None <AuthorizationConfig>());
            }

            IList <string> errors = this.validator.ValidateAuthorizationConfig(properties.Authorizations);

            if (errors.Count > 0)
            {
                string message = string.Join("; ", errors);
                throw new InvalidOperationException($"Error validating authorization policy: {message}");
            }

            var result = new List <Statement>(properties.Authorizations?.Count ?? 0);

            foreach (var statement in properties.Authorizations)
            {
                // parse deny rules first, since we agreed that they take precedence
                // in case of conflicting rules.
                foreach (var rule in statement.Deny)
                {
                    result.Add(new Statement(
                                   Effect.Deny,
                                   statement.Identities,
                                   rule.Operations,
                                   rule.Resources));
                }

                foreach (var rule in statement.Allow)
                {
                    result.Add(new Statement(
                                   Effect.Allow,
                                   statement.Identities,
                                   rule.Operations,
                                   rule.Resources));
                }
            }

            return(Option.Some(new AuthorizationConfig(result)));
        }
コード例 #6
0
 Option <BridgeConfig> ParseBridgeConfig(BrokerProperties properties)
 {
     return(Option.None <BridgeConfig>());
 }