585 Commits

Author SHA1 Message Date
Thiago Loureiro
2a33397c39
Removed Packing to fix issues, will be sorted out after create a nuget package on Nuget.Org (#831) 2019-03-22 13:36:16 +01:00
liweihan
e46467ae3c fix HttpRequesterMiddleware does not call next bug (#830)
call next so that we can do something with the response, such as add some custom header etc...
2019-03-22 13:25:05 +01:00
liweihan
e281f1b3fb remove duplicate IHttpRequester register (#819)
* remove duplicate `IHttpRequester` register

* reserve the first
2019-03-19 23:28:13 +01:00
Thiago Loureiro
cb3989a714
Revert "Fix bug: (#810)" (#823)
This reverts commit 19c80afb05290fac3a144f652cd663c8b513a559.
2019-03-19 23:26:50 +01:00
philia
19c80afb05 Fix bug: (#810)
If the registered Consul node is unexpectedly down and not restarted immediately, other services should continue to find the registered service.
2019-03-19 15:38:01 +01:00
Weidaicheng
e76a51ffc9 Fix: errors when using rate limiting (#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
2019-03-13 00:07:39 +01:00
geffzhang
799abf55c4
nuget package (#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
2019-03-12 10:33:34 +08:00
阿凌
4a1e8d571b IOcelotBuilder opens the IMvcCoreBuilder property for easy customization (#790)
* IOcelotBuilder opens the IMvcCoreBuilder property for easy customization

* Adjustment code
2019-03-11 22:39:27 +08:00
liweihan
49b2a0f0ce update cliamsParser (#798)
* update cliamsParser

* update using
2019-03-11 10:55:13 -03:00
geffzhang
fcefae273f
K8s package (#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
2019-03-11 10:08:17 +08:00
Nagy Bálint
b4f5b68614 UriBuilder - remove leading question mark #747 (#794) 2019-02-26 09:39:56 -03:00
Duke
8d99449b08 fix bug #791 (#795) 2019-02-25 16:36:25 +01:00
Chris Swinchatt
26ae9948d5 Ignore response content if null (fix #785) (#786) 2019-02-20 11:16:55 -03:00
Abolfazl
faaabbe7a7 fix issue #661 for Advanced aggregations (#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
2019-02-04 09:21:50 -03:00
geffzhang
44dccf1fce kubernetes provider (#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
2019-01-31 07:19:32 -03:00
Thiago Loureiro
02e5cea7b1 Reducing Warnings from Ocelot (#743) 2019-01-11 17:56:23 -03:00
Felix Boers
6495891a07 Support placeholder in service fabric services names (#722) 2019-01-11 08:54:54 -05:00
Brian Delgado
7ba6d303b4 Claim values are now being shown when constructing. ClaimValueNotAuthorisedError. (#711) 2019-01-11 09:58:33 +01:00
Tom Pallister
11a2d13f18
Feat/monorepo (#734)
* 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
2019-01-07 19:52:53 +00:00
Ronald van Helden
35253025c7 Added the possibility to manage the placeholders from outside ocelot (#724) 2019-01-03 05:55:23 -08:00
Phil Proctor
9bbb6364f2 Checkin for caching the template matching for significant route finder performance improvements (#728) 2018-12-26 17:05:20 -03:00
David Nissimoff
fa5892d236 Web Sockets: work around .NET FX bug (#702) 2018-12-17 19:39:06 +00:00
Ruben Mamo
37efe354ca Fixed error message when reroute configuration is not found #650 (#698) 2018-12-17 19:37:35 +00:00
Mike
7fb66dd34d Fix DI Registration for IDownstreamRouteProvider (#656)
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.
2018-10-13 11:53:59 +01:00
Tom Pallister
622de5efd0
#639 added copywrite notice (#648) 2018-09-30 10:17:51 +01:00
vasicvuk
b58b3810d8 Update to support Subprotocols. Solves #639 (#642)
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.
2018-09-30 09:17:09 +01:00
Tom Pallister
2d834037e4
removed dep we dont need in dsrfm (#636) 2018-09-25 20:33:31 +01:00
Tom Pallister
dc28d49bda
Feature/rename middleware (#637)
* #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
2018-09-25 20:25:38 +01:00
阿凌
4a8f4c2e03 add a security module (#628) (#629)
* Add security mechanisms, IP whitelists, blacklists, and extended security interfaces.

* Optimized configuration name

* Fix IP Security Bug

* Repair Security Protection Module Bug

* Add security module unit test

* Optimize log prompts
2018-09-25 18:29:38 +01:00
Tom Pallister
aa14b2f877
Feature/#623 (#632)
* #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
2018-09-24 08:22:44 +01:00
Ariel Moraes
54cdc74293 #633 ignore OPTIONS requests on AuthenticationMiddleware (#634) 2018-09-24 07:55:52 +01:00
Tom Pallister
1e5a20c2f2
#630 only set status code if response hasnt started, otherwise exception (#631) 2018-09-22 08:51:19 +01:00
Tom Gardham-Pallister
dcc3f0deae #559 +semver: breaking always use environment when working out AddOcelot on builder 2018-09-20 18:33:00 +01:00
Tom Gardham-Pallister
7c0aa6f97e Merge branch 'feature/config_grow_when_merged' of https://github.com/snb83/Ocelot into snb83-feature/config_grow_when_merged 2018-09-20 18:19:46 +01:00
Tom Pallister
388b1fad90
#604 set use qos based on what we have in docs (#627) 2018-09-20 08:04:15 +01:00
Tom Pallister
669ece07b2
Feature/proxy reason phrase (#618)
* #599 started work to proxy reason phrase

* #599 test for aggregator
2018-09-12 19:48:56 +01:00
Roc Gao
0b9ff92549 fix #609 https://github.com/ThreeMammals/Ocelot/issues/609 (#610) 2018-09-12 07:44:22 +01:00
Erik Juhlin
f934620538 Set status code directly (#608)
Makes it possible for middlewares to read status codes and handle errors
2018-09-12 07:34:39 +01:00
Tom Pallister
44f8e312a8
Feature/refactoring internal config creation stack (#600)
* 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
2018-09-11 21:41:58 +01:00
Rwing
b491bd50a8 fix typo, DownstreamDownstreamPathTemplate => DownstreamPathTemplate (#601) 2018-09-11 21:02:03 +01:00
Tom Pallister
a5c1839ed7
Feature/adding some re route specific validation tests (#590)
* 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
2018-09-04 22:27:54 +01:00
Tom Pallister
ef6db657b7
#593 instanciate upstream path template when dynamic routing for logging (#594) 2018-09-03 21:31:57 +01:00
Tom Pallister
6198404697
##591 added addanddelete method back to cache as Ocelot.Provider.Consul uses it...sigh at me (#592) 2018-09-03 07:58:22 +01:00
Tom Pallister
66b68fc685
Feature/#574 look at httpclient cache key (#589)
* #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...
2018-09-01 13:10:45 +01:00
Tom Pallister
55277cac45
Feature/should not start if specified using service discovery but no provider registered (#584)
* #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
2018-08-31 18:28:43 +01:00
Tom Pallister
29a7af9486
#568 worked out how to check if qos handler present and kill Ocelot i… (#578)
* #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
2018-08-28 18:57:21 +01:00
Tom Pallister
8db5570840
Feature/fix #568 (#576)
* #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
2018-08-27 17:47:45 +01:00
Tom Pallister
369fc5b7a4
#555 added some tests for this issue but struggling to replicate (#570)
* #555 added some tests for this issue but struggling to replicate

* #555 removed cmd=instance from service fabric code as someone who knows service fabric says its not needed
I

* #555 renamed test
2018-08-25 12:33:49 +01:00
Tom Pallister
b0bdeb9402
#534 fixed failing tests for this issue (#575) 2018-08-25 12:32:56 +01:00
Tom Pallister
00a600064d
Feature/issue with path and query string #458 (#565)
* #548 added failing test

* #548 fixed failing tests for issue where using /{everything} didnt build path correctly
2018-08-20 22:28:58 +01:00