* 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.
* 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
* copied everything from repos back to ocelot repo
* added src projects to sln
* removed all test projects that have no tests
* added all test projects to sln
* removed test not on master
* merged unit tests
* merged acceptance tests
* merged integration tests
* fixed namepaces
* build script creates packages for all projects
* updated docs to make sure no references to external repos that we will remove
* +semver: breaking
The two singletons registered for IDownstreamRouteProvider,
DownstreamRouteFinder and DownstreamRouteCreator, were registered using
`TryAddSingleton`. This would cause DownstreamRouteFinder to be
instantiated and found but the "Try" made DownstreamRouteCreator not
registered.
This was noted in the following in `DownstreamRouteProviderFactory`:
```
_providers = provider.GetServices<IDownstreamRouteProvider>().ToDictionary(x => x.GetType().Name);
```
With the registration being done using `TryAddSingleton` only one
element was added to the dictionary. Changing this to `AddSingleton`
fixed this issue.
This was uncovered in an error on line 30 of
`DownstreamRouteProviderFactory`. The key for
`nameof(DownstreamRouteCreator)` did not exist causing an exception to
be thrown.
Ocelot websocket middleware did not work for STOMP over websocket. After investigation i found out that the issue was with subprotocol and headers that are send and filtered.
I the end i used ASP.Net core proxy as a reference to solve the issue here:
3015029f51/src/Microsoft.AspNetCore.Proxy/ProxyAdvancedExtensions.cs
So i modified the code to use the way ASP.Net proxy handles this.
* #630 only set status code if response hasnt started, otherwise exception
* #623 made {RemoteIpAddress} available as placeholder so you can do x-forwarded-for
* #623 local address different on mac, windows and linux for integration test
* renamed some middlewares so they make more sense
* add downstreamroutefindermiddleware benchmark
* #630 only set status code if response hasnt started, otherwise exception
* #623 made {RemoteIpAddress} available as placeholder so you can do x-forwarded-for
* #623 local address different on mac, windows and linux for integration test
* tidy up some code so I can understand it
* broke al the things that make config out into their own classes etc..sigh
* fix the things i broked
* #597 test for issue, works on this branch :E
* #597 removed comments
* added tests for new load balancer creator..basic
* added tests for lb creator and aggregates creator
* added tests for config creator
* boiler plate for tests
* added dynamics tests
* wip
* finished refactoring for now
* started refactoring json config validation stack because ive made it crap
* inject validators from DI rather than instanciating, next step mock them
* added some unit tests for specific validators on the train yey
* #574 consolidate some code, man the config stuff is a mess!
* #574 just use the downstream re route and the key for caching http clients
* #574 added benchmark, i was suprised to learn using a complex type was faster than a string in benchmark .net dictionary tests, hey ho probably dont have enough data in the type...