Skip to content

Commit

Permalink
Fix issue ThreeMammals#890 IDefinedAggregator can't handle error code…
Browse files Browse the repository at this point in the history
…s from downstream requests (ThreeMammals#892)

* Release/13.2.0 (ThreeMammals#834)

* Fix formatting in getting started page (ThreeMammals#752)

* updated release docs (ThreeMammals#745)

* Update README.md (ThreeMammals#756)

Fixed typo "Ocleot"

* Fixed typo there => their (ThreeMammals#763)

* Some Typo fixes (ThreeMammals#765)

* Typo algorythm => algorithm (ThreeMammals#764)

* Typo querystring => query string (ThreeMammals#766)

* Typo usual => usually (ThreeMammals#767)

* Typos (ThreeMammals#768)

* kubernetes provider (ThreeMammals#772)

* feat: Kubernetes ServiceDiscoveryProvider

* 编写k8s测试例子

* feat:fix kube config

* feat: remove port

* feat : complete the k8s test

* feat :  add kubeserviceDiscovery test

* feat : add kube provider unittest

* feat :add kubetnetes docs

how to use ocelot with kubetnetes docs

* keep the configuration as simple as possible, no qos, no cache

* fix: use http

* add PollingKubeServiceDiscovery

* feat : refactor logger

* feat : add  pollkube docs

* feat:Remove unnecessary code

* feat : code-block json

* fix issue ThreeMammals#661 for Advanced aggregations (ThreeMammals#704)

* Add Advanced Aggregation Feature

* fix overwrite error

* distinct data for better performance

* remove constructor parameter

* fix tests issue

* fix tests

* fix tests issue

* Add UnitTest and AcceptanceTest

* fix responseKeys typo

* Update SimpleJsonResponseAggregator.cs

* change port

* Fix code example for SSL Errors (ThreeMammals#780)

DangerousAcceptAnyServerCertificateValidator has to be set to "true" to disable certification validation, not "false".

* Changed wording for ease of reading (ThreeMammals#776)

Just some wording changes for clarification.

* Ignore response content if null (fix ThreeMammals#785) (ThreeMammals#786)

* fix bug ThreeMammals#791 (ThreeMammals#795)

* Update loadbalancer.rst (ThreeMammals#796)

* UriBuilder - remove leading question mark ThreeMammals#747 (ThreeMammals#794)

* Update qualityofservice.rst (ThreeMammals#801)

Tiny typo

* K8s package (ThreeMammals#804)

* feat: Kubernetes ServiceDiscoveryProvider

* 编写k8s测试例子

* feat:fix kube config

* feat: remove port

* feat : complete the k8s test

* feat :  add kubeserviceDiscovery test

* feat : add kube provider unittest

* feat :add kubetnetes docs

how to use ocelot with kubetnetes docs

* keep the configuration as simple as possible, no qos, no cache

* fix: use http

* add PollingKubeServiceDiscovery

* feat : refactor logger

* feat : add  pollkube docs

* feat:Remove unnecessary code

* feat : code-block json

* feat: publish package Ocelot.Provider.Kubernetes

* Okta integration (ThreeMammals#807)

Okta integration

* update cliamsParser (ThreeMammals#798)

* update cliamsParser

* update using

* IOcelotBuilder opens the IMvcCoreBuilder property for easy customization (ThreeMammals#790)

* IOcelotBuilder opens the IMvcCoreBuilder property for easy customization

* Adjustment code

* nuget package (ThreeMammals#809)

* feat: Kubernetes ServiceDiscoveryProvider

* 编写k8s测试例子

* feat:fix kube config

* feat: remove port

* feat : complete the k8s test

* feat :  add kubeserviceDiscovery test

* feat : add kube provider unittest

* feat :add kubetnetes docs

how to use ocelot with kubetnetes docs

* keep the configuration as simple as possible, no qos, no cache

* fix: use http

* add PollingKubeServiceDiscovery

* feat : refactor logger

* feat : add  pollkube docs

* feat:Remove unnecessary code

* feat : code-block json

* feat: publish package Ocelot.Provider.Kubernetes

* feat : nuget package

* fix: Namesapce Spelling wrong

* fix:Namesapce Spelling Wrong

* Fix: errors when using rate limiting (ThreeMammals#811)

* Fix: errors when using rate limiting
Add: QuotaExceededError class for requesting too much
Add: QuotaExceededError error code
Add: Add an error when limit is reached
Reflact: Extract GetResponseMessage method for getting default or configured response message for requ

* Fix: modify check_we_have_considered_all_errors_in_these_tests for adding a new OcelotErrorCode

* added missing COPY csproj files (ThreeMammals#821)

* Add note on In-Process hosting (ThreeMammals#816)

When using ASP.NET Core 2.2 with In-Process hosting in IIS it's important to use .UseIIS() instead of .UseIISIntegration().

* Fix bug: (ThreeMammals#810)

If the registered Consul node is unexpectedly down and not restarted immediately, other services should continue to find the registered service.

* Fixed Dockerfile (missing Kubernetes)

* Revert "Fix bug: (ThreeMammals#810)" (ThreeMammals#823)

This reverts commit 19c80af.

* remove duplicate `IHttpRequester` register (ThreeMammals#819)

* remove duplicate `IHttpRequester` register

* reserve the first

* fix HttpRequesterMiddleware does not call next bug (ThreeMammals#830)

call next so that we can do something with the response, such as add some custom header etc...

* Removed Packing to fix issues, will be sorted out after create a nuget package on Nuget.Org (ThreeMammals#831)

* Allows access to unpass node (ThreeMammals#825)

* Fix bug:
If the registered Consul node is unexpectedly down and not restarted immediately, other services should continue to find the registered service.

* fix bug:
If the registered Consul node is unexpectedly down and not restarted immediately, other services should continue to find the registered service.

* Updated FluentValidations Nuget Package (ThreeMammals#833)

* Removed Warnings

* Make the full DownstreamContext available to user defined aggregators

This allows error codes to be handled
  • Loading branch information
jasongm86 authored and thiagoloureiro committed May 20, 2019
1 parent 2eb8a19 commit 4b6c88d
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/Ocelot/Middleware/Multiplexer/IDefinedAggregator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ namespace Ocelot.Middleware.Multiplexer
{
public interface IDefinedAggregator
{
Task<DownstreamResponse> Aggregate(List<DownstreamResponse> responses);
Task<DownstreamResponse> Aggregate(List<DownstreamContext> responses);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Ocelot.Configuration;

Expand All @@ -21,7 +20,7 @@ public async Task Aggregate(ReRoute reRoute, DownstreamContext originalContext,
if (!aggregator.IsError)
{
var aggregateResponse = await aggregator.Data
.Aggregate(downstreamResponses.Select(x => x.DownstreamResponse).ToList());
.Aggregate(downstreamResponses);

originalContext.DownstreamResponse = aggregateResponse;
}
Expand Down
8 changes: 4 additions & 4 deletions test/Ocelot.AcceptanceTests/AggregateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -646,14 +646,14 @@ public FakeDefinedAggregator(FakeDepdendency dep)
_dep = dep;
}

public async Task<DownstreamResponse> Aggregate(List<DownstreamResponse> responses)
public async Task<DownstreamResponse> Aggregate(List<DownstreamContext> responses)
{
var one = await responses[0].Content.ReadAsStringAsync();
var two = await responses[1].Content.ReadAsStringAsync();
var one = await responses[0].DownstreamResponse.Content.ReadAsStringAsync();
var two = await responses[1].DownstreamResponse.Content.ReadAsStringAsync();

var merge = $"{one}, {two}";
merge = merge.Replace("Hello", "Bye").Replace("{", "").Replace("}", "");
var headers = responses.SelectMany(x => x.Headers).ToList();
var headers = responses.SelectMany(x => x.DownstreamResponse.Headers).ToList();
return new DownstreamResponse(new StringContent(merge), HttpStatusCode.OK, headers, "some reason");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,12 @@ private void GivenReRoute(ReRoute reRoute)

public class TestDefinedAggregator : IDefinedAggregator
{
public async Task<DownstreamResponse> Aggregate(List<DownstreamResponse> responses)
public async Task<DownstreamResponse> Aggregate(List<DownstreamContext> responses)
{
var tom = await responses[0].Content.ReadAsStringAsync();
var laura = await responses[1].Content.ReadAsStringAsync();
var tom = await responses[0].DownstreamResponse.Content.ReadAsStringAsync();
var laura = await responses[1].DownstreamResponse.Content.ReadAsStringAsync();
var content = $"{tom}, {laura}";
var headers = responses.SelectMany(x => x.Headers).ToList();
var headers = responses.SelectMany(x => x.DownstreamResponse.Headers).ToList();
return new DownstreamResponse(new StringContent(content), HttpStatusCode.OK, headers, "some reason");
}
}
Expand Down

0 comments on commit 4b6c88d

Please sign in to comment.