using System.Threading;
namespace Discord
{
///
/// Represents options that should be used when sending a request.
///
public class RequestOptions
{
///
/// Creates a new class with its default settings.
///
public static RequestOptions Default => new RequestOptions();
///
/// Gets or set the max time, in milliseconds, to wait for this request to complete. If
/// null, a request will not time out. If a rate limit has been triggered for this
/// request's bucket and will not be unpaused in time, this request will fail immediately.
///
public int? Timeout { get; set; }
public CancellationToken CancelToken { get; set; } = CancellationToken.None;
///
/// Gets or sets the retry behavior when the request fails.
///
public RetryMode? RetryMode { get; set; }
public bool HeaderOnly { get; internal set; }
///
/// Gets or sets the reason for this action in the guild's audit log.
///
///
/// Gets or sets the reason that will be written to the guild's audit log if applicable. This may not apply
/// to all actions.
///
public string AuditLogReason { get; set; }
internal bool IgnoreState { get; set; }
internal string BucketId { get; set; }
internal bool IsClientBucket { get; set; }
internal static RequestOptions CreateOrClone(RequestOptions options)
{
if (options == null)
return new RequestOptions();
else
return options.Clone();
}
///
/// Initializes a new class with the default request timeout set in
/// .
///
public RequestOptions()
{
Timeout = DiscordConfig.DefaultRequestTimeout;
}
public RequestOptions Clone() => MemberwiseClone() as RequestOptions;
}
}