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