* Make rate-limiting client whitelist dynamic
* Refactor `RateLimitOptions.ClientWhiteList`
* Fix typo in variable `enbleRateLimiting`
* Fix case in variable `clientIdheader`
author Taiwo Otubamowo <totubamowo@deloitte.co.uk>
* fix 1045
* #492 log 500 with error log level, acceptance test, unit test
* #492 minor changes
* initial commit for new feature #1077
allow to limit the number of concurrent tcp connection to a downstream service
* protect code against value not in accurate range
add unit test
* Do not crash host on Dispose
* Add test
* Pin GitVersion.CommandLine package version
* #683 validate if there are duplicated placeholders in UpstreamPathTemplate
* Use registered scheme from Eureka (#1087)
* extra test
* very brief mention MaxConnectionsPerServer in docs
* build develop like a PR
* more docs
* test
Co-authored-by: Taiwo O. <44668623+totubamowo@users.noreply.github.com>
Co-authored-by: Catcher Wong <catcher_hwq@outlook.com>
Co-authored-by: jlukawska <56401969+jlukawska@users.noreply.github.com>
Co-authored-by: buretjph <58700930+buretjph@users.noreply.github.com>
Co-authored-by: Jonathan Mezach <jonathanmezach@gmail.com>
Co-authored-by: 彭伟 <pengweiqhca@sina.com>
* initial commit for new feature #1077
allow to limit the number of concurrent tcp connection to a downstream service
* protect code against value not in accurate range
add unit test
* Do not crash host on Dispose
* Add test
* Pin GitVersion.CommandLine package version
* #683 validate if there are duplicated placeholders in UpstreamPathTemplate
* Use registered scheme from Eureka (#1087)
* extra test
* very brief mention MaxConnectionsPerServer in docs
* build develop like a PR
* more docs
Co-authored-by: jlukawska <56401969+jlukawska@users.noreply.github.com>
Co-authored-by: buretjph <58700930+buretjph@users.noreply.github.com>
Co-authored-by: Jonathan Mezach <jonathanmezach@gmail.com>
Co-authored-by: 彭伟 <pengweiqhca@sina.com>
* cache key now can generate from query string for request with Get Methods and request content for requests with post methods
* MD5Helper Added. OutputCacheMiddleware now can generate cache key using method, url and content
* ConsulFileConfigurationPollerOption created. consul poller option bug fixed
* ConsulFileConfigurationPollerOptionTest created
* #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...
* #580 added failing test
* #580 added failing test for dynamic reroutes
* #580 added failing test for validator
* #580 validation tests passing
* #580 acceptance tests passing
* #580 got rid of the list in sdp factory
* +semver: breaking #580 service discovery provider returned by delegate must be the same as name in config, this is a breaking change because you have to specify consul now
* #580 removed use servide discovery property from file config, we dont need it, just use the service name as indicator the user wants to use service discovery for the given reroute
* #568 worked out how to check if qos handler present and kill Ocelot if options specified but no handler, need to refactor this into fluent validation style
* #568 acceptance tests to make sure Ocelot won't start if the user specifies QoSOptions but doesnt have a QoSHandler registered
* #568 Ocelot wont start if QoSOptions specified and no QoS DelegatingHandler registered e.g. no use of Ocelot.Provider.Polly. Also adds a NoQosDelegatingHandler and logs an error if ive missed something and the user can get to making the request
* #568 sadly something wierd with IServiceProvider and FluentValidation so I'm just defaulting to warning and noqosdelegatinghandler if someone doesnt register but provides options, also added basic in memory cache in case people dont use a specific package
* #529 removed consul deps and introduced delegate to find service discovery provider
* +semver: breaking moved consul configuration to package..introduced mechanism for packages to configure Ocelot pipeline
* Made the file config poller use IHostedService, bit more generic, not just need to provide the correct implementations of the repo services and it will poll anything..this means we can open up redis for #458
* removed comments
* #458 allow users to set rate limits per service for dynamic re routes
* #458 added docs for rate limting on dynamic reroutes
* Made the file config poller use IHostedService, bit more generic, not just need to provide the correct implementations of the repo services and it will poll anything..this means we can open up redis for #458
* removed comments
* #383 added failing test for this issue
* #383 identified issue was with cached load balancer for a given upstream path template based on the key we use, have modified this to include more data, I guess this might be an issue again for other things so I will have a think about it
* #383 fixed failing tests after key change
* Seems to be an issue with coveralls new package not being on nuget...try same version as their nuget package
* bash the old manual tests json back in
* #340 started looking at supporting automatic routing when using service discovery
* #340 getting old routing tests to pass
* #340 renamed stuff to provider rather than finder, as its not longer finding anything
* #340 working towards supporting dynamic routing
* #340 loads of refactoring to make configuration work with dynamic routing
* #340 refactor consul config code so the registry class owns it
* #340 default to consul to maintain backwards compat
* #340 added docs, finished this branches todos
* started messing around with sticky sessions idea
* more tests for sticky session thing
* more faffing cant make up my mind how to do this
* +semver: breaking added sticky session load balancer and changed way load balancer configuration is set by user
* #336 made tests BDDFy
* #296 renamed configuration.json to ocelot.json in preparation
* removed things we dont need for tests
* another file we dont need
* removed some async we dont need
* refactoring to consolidate configuration code
* removed another pointless abstraction
* #296 started writing merge code
* #296 coming up with ideas for this config merging
* #296 still hacking this idea around
* #296 will now do a crappy merge on the configuration
* #296 change so tests pass on windows
* #298 initial hacking around better aggregation
* #298 bit more hacking around
* #298 abstraction over httpresponsemessage
* #298 tidying up
* #298 docs
* #298 missed this
* removed file
* updated package
* updated package
* updated package
* updated package
* updated package
* updated package
* updated package
* all packages updated
* #295 can add token to service provider config and this will be used by consul clients to get services and configuration
* #295 wait longer for this test
* #212 - hacked websockets proxy together
* faffing around
* #212 hacking away :(
* #212 websockets proxy middleware working
* #212 map when for webockets working
* #212 some test refactor
* #212 temp commit
* #212 websockets proxy working, tests passing...need to do some tidying and write docs
* #212 more code coverage
* #212 docs for websockets
* #212 updated readme
* #212 tidying up after websockets refactoring
* #212 tidying up after websockets refactoring
* #212 tidying up after websockets refactoring
* changing logging levels and logging like ms reccomends with structured data rather than strings
* more faffing
* more fafin
* #287 ocelot logger now only takes strings as it did take params then just turned them to strings, misleading, unit tests for logger and diagnosticlogger
* #287 errors now logged as they happen
* #287 more detail for logs requested in issue
* #287 tidy up
* #287 renamed
* #287 always log context id
* #287 fixed me being an idiot
* #287 removed crap websockets unit test that isnt a unit test
* #287 removed crap websockets unit test that isnt a unit test
* hacked together tracing fix by wrapping middleware delegate in another delegate
* #227 have re-implemented tracing, cleaned up trace names, probably still need some refactoring and tests as this was a bit of a hack job
* #227 bit of checking for when we dont want to use tracing, also removed a unit test for websockets that wasnt a unit test, i stuck it there because i wanted the code coverage and now im paying the price, will have to work out a better way to do it
* #227 a bit of refactoring to make this work better, still a bit hacky...would like to revisit the whole thing one day
* #227 dont need this
* #227 or this
* #227 small refactor
* #280 can now add response headers inc trace id, now need to consolidate the header place holder stuff
* #280 changed port for linux tests
* #280 lots of hacking around to handle errors and consolidate placeholders into one class
* #268 added waiter to test, altho i wasn't able to replicate flakeyness with wait anyway! Hopefully this will be solid now!
* #268 fixed a warning
* #268 more code coverage
* #274 added acceptance tests, need to work out failing unit tests but probably going to be a redesign where we hold a reference to the cookie container and empty it if needed
* #274 updated code coverage value
* #274 offloaded cache logic to builder in preparation for adding state
* #274 hacked something together but this is not right approach
* #274 updated defaults and docs
* #274 updated code coverage