/// <summary> /// distribute pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="distributer">The distributor responsible for distributing to different downstream pipelines</param> /// <returns>HTTP pipeline</returns> public static IHttpPipelineHandler Distribute(this IHttpPipeline pipeline, IHttpPipelineDistributer distributer) { if (distributer == null) { throw new ArgumentNullException(nameof(distributer)); } return(pipeline.Join(distributer.AsHandler())); }
public HttpPipelineJointer(IHttpPipeline upstream, IHttpPipeline downstream) { if (downstream is IDummyHttpPipeline) { throw new InvalidOperationException("can not join a dummy pipeline as downstream!"); } _upstream = upstream; _downstream = downstream; }
public HttpConnection( HttpClient client, IHttpPipeline httpPipeline, Credentials credentials ) { _client = client; _httpPipeline = httpPipeline; _credentials = credentials; }
public AuthenticatedGateway(IHttpClientFactory httpClientFactory, ILogger <AuthenticatedGateway> logger) { var options = new ClientOptions(new Uri("https://httppipeline.azurewebsites.net"), httpClientFactory, logger) { Retry = { MaxRetries = 10 } }; options.AddPolicy(HttpPipelinePosition.BeforeTransport, new AuthenticatedGatewayBearerTokenPolicy("username", "password")); _httpPipeline = HttpPipelineBuilder.Build(options); }
/// <summary> /// distribute pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="pipelines">downstream pipelines</param> /// <returns>HTTP pipeline</returns> public static IHttpPipelineHandler Distribute(this IHttpPipeline pipeline, params IHttpPipelineHandler[] pipelines) { if (pipelines == null) { throw new ArgumentNullException(nameof(pipelines)); } if (pipelines.Any() == false) { throw new ArgumentNullException(nameof(pipelines)); } return(pipeline.Distribute(new HttpPipelineBalanceDistributer(pipelines))); }
public PokeGateway( IMemoryCache memoryCache, IHttpClientFactory httpClientFactory, ILogger <PokeGateway> logger) { var options = new ClientOptions(new Uri("https://pokeapi.co/api/v2/"), httpClientFactory, logger) { LogRequests = true, LogResponses = true, Retry = { MaxRetries = 1 } }; options.AddPolicy(HttpPipelinePosition.PerCall, new ResponseMemoryCachePolicy(memoryCache)); _httpPipeline = HttpPipelineBuilder.Build(options); }
/// <summary> /// use a router. /// </summary> /// <param name="pipeline">pipeline to use router</param> /// <param name="rules">route rules</param> /// <returns>pipeline with router</returns> public static IHttpPipeline UseRouter(this IHttpPipeline pipeline, params (string upstreamTemplate, string downstreamTemplate)[] rules)
/// <summary> /// use a router. /// </summary> /// <param name="pipeline">pipeline to use router</param> /// <param name="rules">route rules</param> /// <returns>pipeline with router</returns> public static IHttpPipeline UseRouter(this IHttpPipeline pipeline, params IHttpPipelineRouteRule[] rules) { return(pipeline.JoinPipeline(new HttpPipelineRouter(rules))); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="template">rewrite template.</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, string template) => pipeline.Join(RewriteRule.Create(template));
/// <summary> /// join pipeline with a request emitter, create a http pipeline handler. /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="emitter">request emitter</param> /// <returns>http pipeline handler</returns> public static IHttpPipelineHandler Emit(this IHttpPipeline pipeline, IHttpPipelineEmitter emitter) { return(pipeline.Join(emitter.AsHandler())); }
/// <summary> /// join pipeline with a request emitter, create a http pipeline handler. /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="handler">http message handler</param> /// <returns>http pipeline handler</returns> public static IHttpPipelineHandler Emit(this IHttpPipeline pipeline, HttpMessageHandler handler) { return(Emit(pipeline, new HttpPipelineEmitterOptions(handler))); }
/// <summary> /// trace request with diagnostic listener to pipeline /// </summary> /// <param name="pipeline">HTTP pipeline</param> /// <param name="listener">diagnostic listener</param> /// <returns>new HTTP pipeline</returns> public static IHttpPipeline UseDiagnosticListener(this IHttpPipeline pipeline, DiagnosticListener listener) { return(pipeline.Join(handler => new HttpHandlerWithDiagnosticListener(listener, handler))); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="template">rewrite template.</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(IHttpPipeline pipeline, RewriteRequestTemplate template) => pipeline.Join(RewriteRule.Create(template));
/// <summary> /// use load balancer /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="pipelines">downstream pipelines</param> /// <returns>HTTP pipeline</returns> public static IHttpPipeline UseLoadBalancer(this IHttpPipeline pipeline, params IHttpPipeline[] pipelines) { return(pipeline.Join(new HttpPipelineLoadBalancer(pipelines))); }
/// <summary> /// 接入一个管线 /// </summary> /// <param name="upstream">上游管线</param> /// <param name="downstream">要接入的下游管线</param> /// <returns>请求处理管线</returns> public static IHttpPipeline Join(this IHttpPipeline upstream, IHttpPipeline downstream) { return(new HttpPipelineJointer(upstream, downstream)); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="upstream">upstream rule, or called route rule.</param> /// <param name="downstream">downstream rule, or called rewrite rule</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, string upstream, string downstream) => pipeline.Join(RewriteRule.Create(upstream, downstream));
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">HTTP pipeline</param> /// <param name="templates">rewrite templates.</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, params string[] templates) => pipeline.Join(RewriteRule.Create(templates));
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">HTTP pipeline</param> /// <param name="upstreams">upstream rule, or called route rule.</param> /// <param name="downstream">downstream rule, or called rewrite rule</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(IHttpPipeline pipeline, RewriteRequestTemplate[] upstreams, RewriteRequestTemplate downstream) => pipeline.Join(RewriteRule.Create(upstreams, downstream));
/// <summary> /// 接入一个管线 /// </summary> /// <param name="upstream">上游管线</param> /// <param name="downstream">要接入的下游管线</param> /// <returns>请求处理管线</returns> public static IHttpPipeline Join(this IHttpPipeline upstream, Func <IHttpPipelineHandler, IHttpPipelineHandler> downstream) { return(new HttpPipelineJointer(upstream, HttpPipeline.Create(downstream))); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="template">rewrite template.</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, string template) { return(Rewrite(pipeline, new RewriteRequestTemplate(template))); }
/// <summary> /// use load balancer /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="pipelinesFactories">downstream pipeline factories</param> /// <returns>HTTP pipeline</returns> public static IHttpPipeline UseLoadBalancer(this IHttpPipeline pipeline, params Func <IHttpPipeline, IHttpPipeline>[] pipelinesFactories) { return(pipeline.Join(new HttpPipelineLoadBalancer(pipelinesFactories.Select(f => f(pipeline)).ToArray()))); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="template">rewrite template.</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(IHttpPipeline pipeline, RewriteRequestTemplate template) { var rewriter = RewriteRule.Create(template); return(pipeline.JoinPipeline(rewriter)); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="upstream">upstream rule, or called route rule.</param> /// <param name="downstream">downstream rule, or called rewrite rule</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, string upstream, string downstream) { var rewriter = RewriteRule.Create(upstream, downstream); return(pipeline.JoinPipeline(rewriter)); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="upstreams">upstream rule, or called route rule.</param> /// <param name="downstream">downstream rule, or called rewrite rule</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(this IHttpPipeline pipeline, params string[] templates) { var rewriter = RewriteRule.Create(templates); return(pipeline.JoinPipeline(rewriter)); }
/// <summary> /// join pipeline with a request emitter, create a http pipeline handler. /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <returns>http pipeline handler</returns> public static IHttpPipelineHandler Emit(this IHttpPipeline pipeline) { return(Emit(pipeline, new HttpPipelineEmitterOptions())); }
/// <summary> /// insert a rewrite rule to pipeline /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="upstreams">upstream rule, or called route rule.</param> /// <param name="downstream">downstream rule, or called rewrite rule</param> /// <returns>pipeline with rewrite rule</returns> public static IHttpPipeline Rewrite(IHttpPipeline pipeline, RewriteRequestTemplate[] upstreams, RewriteRequestTemplate downstream) { var rewriter = new RewriteRule(upstreams, downstream); return(pipeline.JoinPipeline(rewriter)); }
/// <summary> /// join pipeline with a request emitter, create a http pipeline handler. /// </summary> /// <param name="pipeline">upstream pipeline</param> /// <param name="options">emitter options</param> /// <returns>http pipeline handler</returns> public static IHttpPipelineHandler Emit(this IHttpPipeline pipeline, HttpPipelineEmitterOptions options) { return(pipeline.Join(new HttpPipelineEmitter(options).AsHandler())); }
/// <summary> /// 重写请求的 Host 属性 /// </summary> /// <param name="pipeline">上游管线</param> /// <param name="host">要重写的主机头</param> /// <returns>请求处理管线</returns> public static IHttpPipeline RewriteHost(this IHttpPipeline pipeline, string host) { return(Rewrite(pipeline, "/{path*}", "//" + host + "/{path}")); }
public HttpPipelineJointer(IHttpPipeline upstream, IHttpPipeline downstream) { _upstream = upstream; _downstream = downstream; }
/// <summary> /// insert a request logger to pipeline /// </summary> /// <param name="pipeline">HTTP pipeline</param> /// <returns>new HTTP pipeline</returns> public static IHttpPipeline UseLogger(this IHttpPipeline pipeline) { throw new NotImplementedException(); }