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
HttpWebRequestbased 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
ThreadQueueDeliveryclass has been replaced with a newDefaultDeliveryclass that usesHttpClientto 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.Runinstead of using a dedicated thread that runs continuously.CancellationTokenSourcefor cleaner shutdown.The
HttpClientis configured to use the proxy from client configuration (if set) and theProxyproperty has been removed from theIPayLoadinterface - this means that setting/overriding the proxy for individual reports in aBeforeNotifycall is no longer supported.Testing
Added new unit tests and tested manually in a sample project