示例#1
0
        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));
        }
示例#2
0
        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;
        }