public static DaprExtensionConfiguration ReadConfiguration(IDictionary <string, object> rawConfiguration)
        {
            var configuration = new DaprExtensionConfiguration();

            ReadCommonConfiguration(rawConfiguration, configuration);

            if (rawConfiguration.TryGetValue("services", out var servicesObject) && servicesObject is Dictionary <string, object> rawServicesConfiguration)
            {
                var services = new Dictionary <string, DaprExtensionServiceConfiguration>();

                foreach (var kvp in rawServicesConfiguration)
                {
                    if (kvp.Value is Dictionary <string, object> rawServiceConfiguration)
                    {
                        var serviceConfiguration = new DaprExtensionServiceConfiguration();

                        ReadServiceConfiguration(rawServiceConfiguration, serviceConfiguration);

                        services.Add(kvp.Key, serviceConfiguration);
                    }
                }

                configuration.Services = services;
            }

            return(configuration);
        }
        private static void ReadServiceConfiguration(IDictionary <string, object> rawConfiguration, DaprExtensionServiceConfiguration serviceConfiguration)
        {
            ReadCommonConfiguration(rawConfiguration, serviceConfiguration);

            serviceConfiguration.AppId       = TryGetValue(rawConfiguration, "app-id");
            serviceConfiguration.Enabled     = TryGetValue <bool>(rawConfiguration, "enabled");
            serviceConfiguration.GrpcPort    = TryGetValue <int>(rawConfiguration, "grpc-port");
            serviceConfiguration.HttpPort    = TryGetValue <int>(rawConfiguration, "http-port");
            serviceConfiguration.MetricsPort = TryGetValue <int>(rawConfiguration, "metrics-port");
            serviceConfiguration.ProfilePort = TryGetValue <int>(rawConfiguration, "profile-port");
        }