using System.Threading; namespace Discord { public class RequestOptions { public static RequestOptions Default => new RequestOptions(); /// /// 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; public RetryMode? RetryMode { get; set; } public bool HeaderOnly { get; internal set; } /// /// Should this request bypass the ratelimit buckets? This option should be used sparingly, and when used, should be coupled with your own /// delays between requests, to avoid encountering 429 errors. /// public bool BypassBuckets { get; set; } /// /// The reason for this action in the guild's audit log /// 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(); } public RequestOptions() { Timeout = DiscordConfig.DefaultRequestTimeout; } public RequestOptions Clone() => MemberwiseClone() as RequestOptions; } }