public IHomeCenterClient CreateClient(HomeCenterConnectionStringBuilder connectionStringBuilder)
 {
     if (connectionStringBuilder == null)
     {
         throw new ArgumentNullException(nameof(connectionStringBuilder));
     }
     return(new HomeCenterClient(connectionStringBuilder, _loggerFactory));
 }
        public HomeCenterClient(HomeCenterConnectionStringBuilder builder, ILoggerFactory loggerFactory)
        {
            void ConfigureApiHttpClient(HttpClient client)
            {
                client.BaseAddress = new Uri(builder.Endpoint);
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                           Convert.ToBase64String(Encoding.ASCII.GetBytes(
                                                                                                                      $"{builder.Username}:{builder.Password}")));
                client.DefaultRequestHeaders.Add("X-Fibaro-Version", "2");
            }

            var services = new ServiceCollection();

            services.AddSingleton(loggerFactory ?? new LoggerFactory());

            services.AddHttpClient(nameof(HttpClient), ConfigureApiHttpClient);
            services.AddHttpClient <IDevicesClient, DevicesClient>(ConfigureApiHttpClient);
            services.AddHttpClient <IStatusClient, StatusClient>(ConfigureApiHttpClient);
            services.AddHttpClient <ISettingsClient, SettingsClient>(ConfigureApiHttpClient);

            _serviceProvider = services.BuildServiceProvider();
        }