Replace default delivery with HttpClient implementation #175
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Goal
Replace the obsolete
HttpWebRequest
based delivery with a new default implementation usingHttpClient
. This allows us to remove the dependency onSystem.Net.Requests
(which has dependencies with known vulnerabilities).Design
The old
ThreadQueueDelivery
class has been replaced with a newDefaultDelivery
class that usesHttpClient
to send requests to the configured endpoints.The new implementation maintains the queue-based delivery mechanism, but with a few changes/improvements:
BlockingQueue<IPayLoad>
implementation with aBlockingCollection<IPayLoad>
from .NET, which handles thread-safety internally.Task.Run
instead of using a dedicated thread that runs continuously.CancellationTokenSource
for cleaner shutdown.The
HttpClient
is configured to use the proxy from client configuration (if set) and theProxy
property has been removed from theIPayLoad
interface - this means that setting/overriding the proxy for individual reports in aBeforeNotify
call is no longer supported.Testing
Added new unit tests and tested manually in a sample project