45 Commits

Author SHA1 Message Date
TomPallister
7408060fba more error handling and docs 2020-04-13 12:46:14 +01:00
TomPallister
c9483cdad6 tests to handle some error cases and docs 2020-04-13 12:05:55 +01:00
jlukawska
68e3ae8cdd #603 return 502 on HttpRequestException 2020-01-22 14:55:41 +01:00
jlukawska
f35a07a3da #603 return 502 when request cannot be completed 2019-11-22 08:01:02 +01:00
Thiago Loureiro
5d82e68534
Removed unused usings, removed empty spaces, removed tons os warnings (#903) 2019-05-28 11:00:54 +08:00
liweihan
4476f8273e [WIP] use HttpContext.RequestAborted to support cancel a request (#902)
* use HttpContext.RequestAborted to support cancel a request

* register context.HttpContext.RequestAborted.ThrowIfCancellationRequested() in ExceptionHandlerMiddleware

* add LangVersion

* add default number to OcelotErrorCode
fix unit test

* revert back to one line
2019-05-27 16:23:30 +08: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
Chris Swinchatt
26ae9948d5 Ignore response content if null (fix #785) (#786) 2019-02-20 11:16:55 -03:00
Ronald van Helden
35253025c7 Added the possibility to manage the placeholders from outside ocelot (#724) 2019-01-03 05:55:23 -08: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
Tom Pallister
87348e5d1b
Feature/removed consul and its deps to other package (#539)
* #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
2018-08-12 17:28:41 +05:30
Dilsy99
d2432cf7f7 Develop (#338)
* #330 Fix and issue with the httpclient being cached on the url but not taking the http verb into accont. This caused an issue because if the same url but different verbs had handlers, the incorrect handler would be called

* Amend so that UnableToCompleteRequestError returns 500 rather than 404. This error occur when a delegate handler throws an exception

* Fix test that broke because of the change from 404 to 500 when delegate changes
2018-04-30 10:23:02 +01:00
Tom Pallister
a15f75dda8
#298 initial hacking around better aggregation (#310)
* #298 initial hacking around better aggregation

* #298 bit more hacking around

* #298 abstraction over httpresponsemessage

* #298 tidying up

* #298 docs

* #298 missed this
2018-04-12 17:35:04 +01:00
Tom Pallister
efbb950ea2
Feature/another look at logging (#303)
* #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
2018-04-07 12:03:24 +01:00
Tom Pallister
b51df71d7b
#280 Add headers to response (#286)
* #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
2018-03-18 14:58:39 +00:00
Philip Wood
b8e95373a4 Fix async/await warnings 2018-03-06 10:59:01 +00:00
Philip Wood
50980fda93 Fix various violations
SA1216, CS0105, CS0169, CS0414, CS0649
2018-03-03 14:08:52 +00:00
Philip Wood
167fbb3daf Remove multiple concurrent blank lines
SA1507
2018-03-03 13:26:27 +00:00
Tom Pallister
d1926268ac
Feature/downstream aggregation (#248)
* started messing around with this on the train last night

* mega hacking away to change middleware into Ocelot iddleware

* scoped data repo back in

* broken commit getting tests working

* another broken commit farting around with tests

* all unit tests passing again

* mw pipeline for ocelot...still loads of hacks but getting there now to get acceptance tests working, then fix config so you can have aggregate and then imlement multiplexer, then mapping to response...loads to do

* all tests passing before aggregation feature implemented

* removed all the request middleware stuff we dont need it

* updated how errors work...tho i think there could be edge case here when aggregating because one downstream could error and this would effect another

* removed multiplexer so you dont have to send route down, this isnt very thread safe...sigh

* hacking around getting the config for aggregates in, this might change

* refactored builder and unit tests passing now

* Updated a bunch of ports for tests

* plugged in code to create reroutes that are aggregates

* made multiplexer a class

* hacked test to death

* simple aggregator done, initial validation done

* removed request id from context, it is still specific for http request

* now aggregates to json always

* docs for aggregate reroutes

* Updated docs
2018-02-27 08:22:47 +00:00
Tom Pallister
98133d9473
Feature/expose http handlers (#224)
* temp commit

* trying to work out how to expose the http handlers in a decent way..

* pissing about at lunch

* changed to func so you can instanciate object or new it up each time

* docs for dele handlers

* upgraded to sdk 2.1.4

* some validation for consul services
2018-02-13 09:07:09 +00:00
geffzhang
ef3c4f614a Monitoring (#219)
* feat:  use Https://github.com/ButterflyAPM to monitor each API request monitoring metrics

* feat: using DiagnosticSource and Butterfly.OpenTracing

* refactor:refactor Ocelot tracing, merge code into OcelotDiagnosticListener

* refactor: move OcelotHttpTracingHandler to Requester

* fix: Requester\HttpClientBuilder.cs(10,14): error CS0234: The type or namespace name 'Tracing' does not exist in the namespace

* feat: add test should_set_up_tracing

* feat : Remove extraneous code

* feat: remove unused DiagnosticSource diagnostic

* fix : test UseTracing

* add test should_call_scoped_data_repository_QosProviderError

* add test should_return_any_errors

* add test HttpClientHttpRequesterTest

*  it should keep it can not be deleted
2018-02-12 18:33:23 +00:00
Tom Pallister
a4bb0dd13b
fix for #214 and some tests for the class it was in but not for the error (cant be arsed to test as have to spin up IIS) (#218) 2018-02-03 09:02:01 +00:00
Tom Pallister
3ac9b3bd87
hacked together load balancing reroutes in fileconfig (#211)
* hacked together load balancing reroutes in fileconfig

* some renaming and refactoring

* more renames

* hacked away the old config json

* test for issue 213

* renamed key

* dont share ports

* oops

* updated docs

* mvoed docs around

* port being used
2018-01-31 20:34:55 +00:00
Eilyyyy
4f27a50503 add file configuration fluent validation and change default configura… (#168)
* add file configuration fluent validation and change default configuration validator to fluent validator

* add file validation failed error code

* change authentication schemes check to async

* beautify the code ^_^

* clean file validation and fix test failure.
2017-12-05 18:29:44 +00:00
Tom Gardham-Pallister
b57ae391ef looking at #135 validation 2017-11-01 18:57:27 +00:00
Tom Pallister
3f2af85969 test passing with authentication being provided by the user and mapped to the re route in config 2017-11-01 15:25:55 +00:00
Philip Wood
15827c2e45 Delete unused file 2017-07-18 22:57:00 +01:00
Philip Wood
ca4efa5e10 Back out of some of the functional changes to the ResponderMiddleware tests... I'll look at these again once the consolidation changes are merged. 2017-07-18 11:11:24 +01:00
Philip Wood
d02e921a58 Moved ScopedRepository into test base class. 2017-07-18 10:53:57 +01:00
Philip Wood
8042bbab2c Moved common middleare test setup into a base class 2017-07-18 09:28:32 +01:00
Philip Wood
b0c12431d6 Added test coverage around responder middleware, and refactored these to not use test server. 2017-07-11 18:45:53 +01:00
Marc Denman
0c33323352 Change HttpStatusCodeMapper not to wrap responses
As part of #66 we realised that the implementation of
IErrorToHttpStatusCodeMapper would always return a wrapped StatusCode
within an OK response, in turn meaning that ResponderMiddleware would
never fall into the else branch for returning a 500.

This commit removes the wrapping of the status code and removes the unused
logic for generating the 500 status code, giving the mapper full
responsbility for generating the correct status code.
2017-03-14 09:15:19 +00:00
TomPallister
286c7f8488 Fixed issue where qos was being created for each request so circuit breaker was never stopping traffic going to downstream service. 2017-02-11 18:56:36 +00:00
TomPallister
820673dda8 added docs but qos acceptance test not working seems circuit never opens but not sure if it is meant to with timeouts..investigating 2017-02-11 15:11:10 +00:00
Tom Gardham-Pallister
f7fe7c0f49 more refactoring 2017-02-08 18:47:35 +00:00
Tom Gardham-Pallister
0a66051b92 removed some code we dont need as not expecting any errors so should just throw an exception to the global handler 2017-02-06 21:47:08 +00:00
TomPallister
af506b079a more logging, more readme, more refactoring 2016-11-05 11:36:58 +00:00
TomPallister
47afc850ff Added some basic cache stuff 2016-11-04 15:05:59 +00:00
TomPallister
367fa327b3 bunch of refactoring 2016-10-26 21:38:44 +01:00
TomPallister
9c771bf9e0 added benchmarks back in, renamed data repository and a few other things 2016-10-24 19:32:52 +01:00
TomPallister
8b0ceeda5b removed library namespace 2016-10-18 19:10:09 +01:00
TomPallister
f79b76b414 reorganised project so its a bit more vertical for features 2016-10-18 18:52:43 +01:00
tom.pallister
3d60602c7e Added a get authentication test, removed the infrastructure name space as it seemed pointless, started thinking about how to pass claims on with the request 2016-10-17 18:00:36 +01:00
TomPallister
34bac7e0d4 Added first authentiction code..we have a test that makes sure we are unauthenticed but i havent been able to get authenticated to work yet due to identity server usual madness when calling with their SDK! 2016-10-15 11:17:18 +01:00
TomPallister
0627e9399b brought in flurl and stated adding tests for the requester 2016-09-13 20:29:00 +01:00