Esempio n. 1
0
        /// <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()));
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 public HttpConnection(
     HttpClient client,
     IHttpPipeline httpPipeline,
     Credentials credentials
     )
 {
     _client       = client;
     _httpPipeline = httpPipeline;
     _credentials  = credentials;
 }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
        /// <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)));
        }
Esempio n. 6
0
    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));
Esempio n. 10
0
 /// <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()));
 }
Esempio n. 11
0
 /// <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)));
 }
Esempio n. 12
0
 /// <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));
Esempio n. 14
0
 /// <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)));
 }
Esempio n. 15
0
 /// <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));
Esempio n. 19
0
 /// <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)));
 }
Esempio n. 21
0
 /// <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));
        }
Esempio n. 25
0
 /// <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));
        }
Esempio n. 27
0
 /// <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}"));
 }
Esempio n. 29
0
 public HttpPipelineJointer(IHttpPipeline upstream, IHttpPipeline downstream)
 {
     _upstream   = upstream;
     _downstream = downstream;
 }
Esempio n. 30
0
 /// <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();
 }