/// <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); }
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); }
public static HttpApiFactory <IOsuApiClient> CreateFactory(params string[] apiKeys) { var keyFilter = new ApiKeyFilter(apiKeys); HttpApiFactory <IOsuApiClient> httpApiFactory = CreateFactory(keyFilter); return(httpApiFactory); }
public IOsuApiClient CreateClient() { if (_httpApiFactory == null) { _httpApiFactory = CreateFactory(_apiKeyFilter); } return(_httpApiFactory.CreateHttpApi()); }
/// <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; }); }
/// <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); }
/// <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; }); }
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)); }
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; } }
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)); }
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; }
/// <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(); }
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); }
public void ConstructorTest() { HttpApiFactory factory = new HttpApiFactory("DEMO", typeof(IAubTestApi)); Assert.Equal(typeof(IAubTestApi), factory.InterfaceType); }
protected BaseHttpApiTests() { Factory = new HttpApiFactory(); DatabaseUtility.CleanUp().Wait(); }
/// <summary> /// Http通知通道 /// </summary> static HttpNotifyClient() { HttpApiFactory.Add <IHttpNotifyApi>(); }