Initial commit, basic proxying working
This commit is contained in:
71
Myriad/Rest/Exceptions/DiscordRequestException.cs
Normal file
71
Myriad/Rest/Exceptions/DiscordRequestException.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace Myriad.Rest.Exceptions
|
||||
{
|
||||
public class DiscordRequestException: Exception
|
||||
{
|
||||
public DiscordRequestException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError)
|
||||
{
|
||||
RequestBody = requestBody;
|
||||
Response = response;
|
||||
ApiError = apiError;
|
||||
}
|
||||
|
||||
public string RequestBody { get; init; } = null!;
|
||||
public HttpResponseMessage Response { get; init; } = null!;
|
||||
|
||||
public HttpStatusCode StatusCode => Response.StatusCode;
|
||||
public int? ErrorCode => ApiError?.Code;
|
||||
|
||||
internal DiscordApiError? ApiError { get; init; }
|
||||
|
||||
public override string Message =>
|
||||
(ApiError?.Message ?? Response.ReasonPhrase ?? "") + (FormError != null ? $": {FormError}" : "");
|
||||
|
||||
public string? FormError => ApiError?.Errors?.ToString();
|
||||
}
|
||||
|
||||
public class NotFoundException: DiscordRequestException
|
||||
{
|
||||
public NotFoundException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError): base(
|
||||
response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class UnauthorizedException: DiscordRequestException
|
||||
{
|
||||
public UnauthorizedException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError): base(
|
||||
response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class ForbiddenException: DiscordRequestException
|
||||
{
|
||||
public ForbiddenException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError): base(
|
||||
response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class ConflictException: DiscordRequestException
|
||||
{
|
||||
public ConflictException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError): base(
|
||||
response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class BadRequestException: DiscordRequestException
|
||||
{
|
||||
public BadRequestException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError): base(
|
||||
response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class TooManyRequestsException: DiscordRequestException
|
||||
{
|
||||
public TooManyRequestsException(HttpResponseMessage response, string requestBody, DiscordApiError? apiError):
|
||||
base(response, requestBody, apiError) { }
|
||||
}
|
||||
|
||||
public class UnknownDiscordRequestException: DiscordRequestException
|
||||
{
|
||||
public UnknownDiscordRequestException(HttpResponseMessage response, string requestBody,
|
||||
DiscordApiError? apiError): base(response, requestBody, apiError) { }
|
||||
}
|
||||
}
|
29
Myriad/Rest/Exceptions/RatelimitException.cs
Normal file
29
Myriad/Rest/Exceptions/RatelimitException.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
|
||||
using Myriad.Rest.Ratelimit;
|
||||
|
||||
namespace Myriad.Rest.Exceptions
|
||||
{
|
||||
public class RatelimitException: Exception
|
||||
{
|
||||
public RatelimitException(string? message): base(message) { }
|
||||
}
|
||||
|
||||
public class RatelimitBucketExhaustedException: RatelimitException
|
||||
{
|
||||
public RatelimitBucketExhaustedException(Bucket bucket, TimeSpan retryAfter): base(
|
||||
"Rate limit bucket exhausted, request blocked")
|
||||
{
|
||||
Bucket = bucket;
|
||||
RetryAfter = retryAfter;
|
||||
}
|
||||
|
||||
public Bucket Bucket { get; }
|
||||
public TimeSpan RetryAfter { get; }
|
||||
}
|
||||
|
||||
public class GloballyRatelimitedException: RatelimitException
|
||||
{
|
||||
public GloballyRatelimitedException(): base("Global rate limit hit") { }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user