示例#1
0
        /// <summary>
        /// 为微信支付的Api契约配置商户证书
        /// </summary>
        /// <typeparam name="TInterface"></typeparam>
        /// <param name="httpApiFactory"></param>
        /// <param name="certificateFactory"></param>
        /// <param name="handlerFactory"></param>
        /// <returns></returns>
        public static HttpApiFactory <TInterface> ConfigureCertificate <TInterface>(
            this HttpApiFactory <TInterface> httpApiFactory,
            Func <X509Certificate> certificateFactory,
            Func <HttpClientHandler> handlerFactory = null)
            where TInterface : class, IHttpApi
        {
            if (httpApiFactory == null)
            {
                throw new ArgumentNullException(nameof(httpApiFactory));
            }

            if (certificateFactory is null)
            {
                throw new ArgumentNullException(nameof(certificateFactory));
            }

            if (handlerFactory != null)
            {
                httpApiFactory = httpApiFactory.ConfigureHttpMessageHandler(() =>
                {
                    HttpClientHandler handler = handlerFactory?.Invoke() ?? new HttpClientHandler();
                    X509Certificate x509      = certificateFactory();
                    if (x509 != null)
                    {
                        handler.ClientCertificates.Add(x509);
                    }
                    return(handler);
                });
            }
            return(httpApiFactory);
        }
示例#2
0
        public static HttpApiFactory <IOsuApiClient> CreateFactory(IEnumerable <string> apiKeys, Action <HttpApiConfig> options = null)
        {
            var keyFilter = new ApiKeyFilter(apiKeys);
            HttpApiFactory <IOsuApiClient> httpApiFactory = CreateFactory(keyFilter, options);

            return(httpApiFactory);
        }
示例#3
0
        public static HttpApiFactory <IOsuApiClient> CreateFactory(params string[] apiKeys)
        {
            var keyFilter = new ApiKeyFilter(apiKeys);
            HttpApiFactory <IOsuApiClient> httpApiFactory = CreateFactory(keyFilter);

            return(httpApiFactory);
        }
示例#4
0
        public IOsuApiClient CreateClient()
        {
            if (_httpApiFactory == null)
            {
                _httpApiFactory = CreateFactory(_apiKeyFilter);
            }

            return(_httpApiFactory.CreateHttpApi());
        }
示例#5
0
 /// <summary>
 /// 网站监控对象
 /// </summary>
 /// <param name="options"></param>
 /// <param name="loggerFactory"></param>
 /// <exception cref="ArgumentNullException"></exception>
 public WebSiteItem(WebSiteOptions options, ILoggerFactory loggerFactory)
     : base(options)
 {
     this.options        = options;
     this.resultMatch    = new ResultMatch(options.ResultMatch);
     this.httpApiFactory = new HttpApiFactory <IWebSiteApi>().ConfigureHttpApiConfig(c =>
     {
         c.LoggerFactory = loggerFactory;
     });
 }
示例#6
0
        /// <summary>
        /// Http 异常通知
        /// </summary>
        /// <param name="context">通知上下文</param>
        /// <returns></returns>
        public async Task NotifyAsync(NotifyContent context)
        {
            var httpContent = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Title", context.Title),
                new KeyValuePair <string, string>("Message", context.Message)
            };

            await HttpApiFactory.Create <IHttpNotifyApi>()
            .SendNotifyAsync(this.opt.Uri, this.opt.Header, httpContent);
        }
示例#7
0
        /// <summary>
        /// 初始化配置
        /// </summary>
        static void Init()
        {
            HttpServer.Start(9999);

            // 注册与配置IUserApi接口
            HttpApiFactory.Add <IUserApi>().ConfigureHttpApiConfig(c =>
            {
                c.HttpHost      = new Uri("http://localhost:9999/");
                c.LoggerFactory = new LoggerFactory().AddConsole();
                c.FormatOptions.DateTimeFormat = DateTimeFormats.ISO8601_WithMillisecond;
            });
        }
示例#8
0
        public void CreateHttpApiTest()
        {
            var factory = new HttpApiFactory <IMyApi>()
                          .SetLifetime(TimeSpan.FromMilliseconds(100d));

            var api1 = ((IHttpApiFactory)factory).CreateHttpApi();
            var api2 = ((IHttpApiFactory)factory).CreateHttpApi();

            Assert.True(IsHttpHandlerEquals(api1, api2));
            Assert.False(api1 == api2);

            Thread.Sleep(TimeSpan.FromMilliseconds(150));

            var api3 = ((IHttpApiFactory)factory).CreateHttpApi();

            Assert.False(IsHttpHandlerEquals(api1, api3));
        }
示例#9
0
        public async Task <AjaxResult <StatisticsDto> > GetOnlineStudyAsync()
        {
            try
            {
                var userApi = HttpApiFactory.Create <IUserAPI>();
                var about   = await userApi.GetByIdAsync(new SearchDto()
                {
                    Role = "1", Code = "钱前"
                });

                return(about);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#10
0
        public void AddCreateTest()
        {
            HttpApiFactory.Add <IMyApi>()
            .SetLifetime(TimeSpan.FromMilliseconds(100d));

            var api1 = HttpApiFactory.Create <IMyApi>();
            var api2 = HttpApiFactory.Create <IMyApi>();

            Assert.True(IsHttpHandlerEquals(api1, api2));
            Assert.False(api1 == api2);

            Thread.Sleep(TimeSpan.FromMilliseconds(150));

            var api3 = HttpApiFactory.Create <IMyApi>();

            Assert.False(IsHttpHandlerEquals(api1, api3));
        }
示例#11
0
 public Startup(IConfiguration configuration)
 {
     // 注册与配置IUserApi接口
     HttpApiFactory.Add <IUserAPI>().ConfigureHttpApiConfig(c =>
     {
         c.HttpHost      = new Uri("http://localhost:55418/");
         c.LoggerFactory = new LoggerFactory().AddConsole();
         c.FormatOptions.DateTimeFormat = DateTimeFormats.ISO8601_WithMillisecond;
     });
     // 注册与配置IUserApi接口
     HttpApiFactory.Add <IOnlineStudyAPI>().ConfigureHttpApiConfig(c =>
     {
         c.HttpHost      = new Uri("http://localhost:50323/");
         c.LoggerFactory = new LoggerFactory().AddConsole();
         c.FormatOptions.DateTimeFormat = DateTimeFormats.ISO8601_WithMillisecond;
     });
     Configuration = configuration;
 }
示例#12
0
        /// <summary>
        /// 请求接口
        /// </summary>
        /// <returns></returns>
        private static async Task RequestAsync()
        {
            // userApi由HttpApiFactory创建,自动接管其生命周期
            // 不应该将其做为全局变量缓存起来
            var userApi = HttpApiFactory.Create <IUserApi>();

            var user = new UserInfo
            {
                Account  = "laojiu",
                Password = "******",
                BirthDay = DateTime.Parse("2018-01-01 12:30:30"),
                Email    = "*****@*****.**",
                Gender   = Gender.Male
            };

            var about = await userApi
                        .GetAboutAsync("webapi/user/about", user, "somevalue");

            var user1 = await userApi
                        .GetByIdAsync("id001", CancellationToken.None);

            var user2 = await userApi
                        .GetByAccountAsync("laojiu", CancellationToken.None);

            var user3 = await userApi
                        .UpdateWithFormAsync(user, nickName : "老九", age : 18)
                        .Retry(3, i => TimeSpan.FromSeconds(i))
                        .WhenCatch <HttpStatusFailureException>();

            var user4 = await userApi
                        .UpdateWithJsonAsync(user);

            var user5 = await userApi
                        .UpdateWithXmlAsync(user).HandleAsDefaultWhenException();

            var file = new MulitpartFile("file.data");

            file.UploadProgressChanged += (s, e) => Console.WriteLine(e);

            var user6 = await userApi
                        .UpdateWithMulitpartAsync(user, "老九", 18, file);

            file.Dispose();
        }
示例#13
0
        public void CreateHttpApiTest()
        {
            var factory = new HttpApiFactory <IMyApi>(null, null)
            {
                Lifetime = TimeSpan.FromMilliseconds(100)
            };

            var api1 = factory.CreateHttpApi();
            var api2 = factory.CreateHttpApi();

            Assert.True(IsHttpApiConfigEquals(api1, api2));
            Assert.False(api1 == api2);

            Thread.Sleep(TimeSpan.FromMilliseconds(150));

            var api3 = factory.CreateHttpApi();

            Assert.False(IsHttpApiConfigEquals(api1, api3));
        }
        public void AddCreateTest()
        {
            HttpApiFactory.Add <IMyApi>()
            .SetLifetime(TimeSpan.FromMilliseconds(100d));

            var api1 = HttpApiFactory.Create <IMyApi>();
            var api2 = HttpApiFactory.Create <IMyApi>();

            Assert.True(IsHttpApiConfigEquals(api1, api2));
            Assert.False(api1 == api2);

            Thread.Sleep(TimeSpan.FromMilliseconds(150));

            var api3 = HttpApiFactory.Create <IMyApi>();

            Assert.False(IsHttpApiConfigEquals(api1, api3));

            api3.Dispose();
            Assert.True(GetHttpApiConfig(api3).IsDisposed == false);
        }
示例#15
0
        public void ConstructorTest()
        {
            HttpApiFactory factory = new HttpApiFactory("DEMO", typeof(IAubTestApi));

            Assert.Equal(typeof(IAubTestApi), factory.InterfaceType);
        }
示例#16
0
 protected BaseHttpApiTests()
 {
     Factory = new HttpApiFactory();
     DatabaseUtility.CleanUp().Wait();
 }
示例#17
0
 /// <summary>
 /// Http通知通道
 /// </summary>
 static HttpNotifyClient()
 {
     HttpApiFactory.Add <IHttpNotifyApi>();
 }