|
@@ -46,18 +46,20 @@ namespace Discord.API |
|
|
internal IRestClient RestClient { get; private set; } |
|
|
internal IRestClient RestClient { get; private set; } |
|
|
internal ulong? CurrentUserId { get; set; } |
|
|
internal ulong? CurrentUserId { get; set; } |
|
|
public RateLimitPrecision RateLimitPrecision { get; private set; } |
|
|
public RateLimitPrecision RateLimitPrecision { get; private set; } |
|
|
|
|
|
internal bool UseSystemClock { get; set; } |
|
|
|
|
|
|
|
|
internal JsonSerializer Serializer => _serializer; |
|
|
internal JsonSerializer Serializer => _serializer; |
|
|
|
|
|
|
|
|
/// <exception cref="ArgumentException">Unknown OAuth token type.</exception> |
|
|
/// <exception cref="ArgumentException">Unknown OAuth token type.</exception> |
|
|
public DiscordRestApiClient(RestClientProvider restClientProvider, string userAgent, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, |
|
|
public DiscordRestApiClient(RestClientProvider restClientProvider, string userAgent, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, |
|
|
JsonSerializer serializer = null, RateLimitPrecision rateLimitPrecision = RateLimitPrecision.Second) |
|
|
|
|
|
|
|
|
JsonSerializer serializer = null, RateLimitPrecision rateLimitPrecision = RateLimitPrecision.Second, bool useSystemClock = true) |
|
|
{ |
|
|
{ |
|
|
_restClientProvider = restClientProvider; |
|
|
_restClientProvider = restClientProvider; |
|
|
UserAgent = userAgent; |
|
|
UserAgent = userAgent; |
|
|
DefaultRetryMode = defaultRetryMode; |
|
|
DefaultRetryMode = defaultRetryMode; |
|
|
_serializer = serializer ?? new JsonSerializer { ContractResolver = new DiscordContractResolver() }; |
|
|
_serializer = serializer ?? new JsonSerializer { ContractResolver = new DiscordContractResolver() }; |
|
|
RateLimitPrecision = rateLimitPrecision; |
|
|
RateLimitPrecision = rateLimitPrecision; |
|
|
|
|
|
UseSystemClock = useSystemClock; |
|
|
|
|
|
|
|
|
RequestQueue = new RequestQueue(); |
|
|
RequestQueue = new RequestQueue(); |
|
|
_stateLock = new SemaphoreSlim(1, 1); |
|
|
_stateLock = new SemaphoreSlim(1, 1); |
|
@@ -265,6 +267,8 @@ namespace Discord.API |
|
|
CheckState(); |
|
|
CheckState(); |
|
|
if (request.Options.RetryMode == null) |
|
|
if (request.Options.RetryMode == null) |
|
|
request.Options.RetryMode = DefaultRetryMode; |
|
|
request.Options.RetryMode = DefaultRetryMode; |
|
|
|
|
|
if (request.Options.UseSystemClock == null) |
|
|
|
|
|
request.Options.UseSystemClock = UseSystemClock; |
|
|
|
|
|
|
|
|
var stopwatch = Stopwatch.StartNew(); |
|
|
var stopwatch = Stopwatch.StartNew(); |
|
|
var responseStream = await RequestQueue.SendAsync(request).ConfigureAwait(false); |
|
|
var responseStream = await RequestQueue.SendAsync(request).ConfigureAwait(false); |
|
|