Added option to cancel an outgoing REST request in the SendingRequest event
This commit is contained in:
@@ -6,6 +6,7 @@ namespace Discord.Net.Rest
|
||||
public class RequestEventArgs : EventArgs
|
||||
{
|
||||
public IRestRequest Request { get; set; }
|
||||
public bool Cancel { get; set; }
|
||||
|
||||
public RequestEventArgs(IRestRequest request)
|
||||
{
|
||||
|
||||
@@ -26,8 +26,12 @@ namespace Discord.Net.Rest
|
||||
public event EventHandler<RequestEventArgs> SendingRequest = delegate { };
|
||||
public event EventHandler<CompletedRequestEventArgs> SentRequest = delegate { };
|
||||
|
||||
private void OnSendingRequest(IRestRequest request)
|
||||
=> SendingRequest(this, new RequestEventArgs(request));
|
||||
private bool OnSendingRequest(IRestRequest request)
|
||||
{
|
||||
var eventArgs = new RequestEventArgs(request);
|
||||
SendingRequest(this, eventArgs);
|
||||
return !eventArgs.Cancel;
|
||||
}
|
||||
private void OnSentRequest(IRestRequest request, object response, string responseJson, double milliseconds)
|
||||
=> SentRequest(this, new CompletedRequestEventArgs(request, response, responseJson, milliseconds));
|
||||
|
||||
@@ -88,7 +92,7 @@ namespace Discord.Net.Rest
|
||||
{
|
||||
if (request == null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
OnSendingRequest(request);
|
||||
if (!OnSendingRequest(request)) throw new OperationCanceledException();
|
||||
var results = await Send(request, true).ConfigureAwait(false);
|
||||
var response = Deserialize<ResponseT>(results.Response);
|
||||
OnSentRequest(request, response, results.Response, results.Milliseconds);
|
||||
@@ -99,7 +103,7 @@ namespace Discord.Net.Rest
|
||||
{
|
||||
if (request == null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
OnSendingRequest(request);
|
||||
if (!OnSendingRequest(request)) throw new OperationCanceledException();
|
||||
var results = await Send(request, false).ConfigureAwait(false);
|
||||
OnSentRequest(request, null, null, results.Milliseconds);
|
||||
}
|
||||
@@ -109,7 +113,7 @@ namespace Discord.Net.Rest
|
||||
{
|
||||
if (request == null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
OnSendingRequest(request);
|
||||
if (!OnSendingRequest(request)) throw new OperationCanceledException();
|
||||
var results = await SendFile(request, true).ConfigureAwait(false);
|
||||
var response = Deserialize<ResponseT>(results.Response);
|
||||
OnSentRequest(request, response, results.Response, results.Milliseconds);
|
||||
@@ -120,7 +124,7 @@ namespace Discord.Net.Rest
|
||||
{
|
||||
if (request == null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
OnSendingRequest(request);
|
||||
if (!OnSendingRequest(request)) throw new OperationCanceledException();
|
||||
var results = await SendFile(request, false).ConfigureAwait(false);
|
||||
OnSentRequest(request, null, null, results.Milliseconds);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user