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; } }