public T Factory <T>(Action <UserCredentials> userCredentials) where T : ResourceClient { var userCredentialsImpl = new UserCredentialsImpl(); userCredentials(userCredentialsImpl); var uri = new Uri(string.Format("{0}/", Behavior.HostUrl)); var handler = new HttpClientHandler { Credentials = new NetworkCredential(userCredentialsImpl.Username, userCredentialsImpl.Password) }; var client = new HttpClient(handler); client.BaseAddress = uri; client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); if (Behavior.Timeout != TimeSpan.Zero) { client.Timeout = Behavior.Timeout; } Client = client; var type = typeof(T); var implClass = GetType().Assembly .GetTypes() .FirstOrDefault(x => type.IsAssignableFrom(x) && !x.IsInterface); return((T)Activator.CreateInstance(implClass, client, Behavior.Logger)); }
public VirtualHostClient Change(string virtualHost, Action<UserCredentials> args) { Init.OnVirtualHost(virtualHost); var argsImpl = new UserCredentialsImpl(); args(argsImpl); Init.UsingCredentials(argsImpl.Username, argsImpl.Password); Client = GetClient(); return this; }