chore: add csharpier to husky, format backend with csharpier
This commit is contained in:
parent
5fab66444f
commit
7f971e8549
73 changed files with 2098 additions and 1048 deletions
|
@ -17,11 +17,13 @@ public partial class InternalController(DatabaseContext db) : ControllerBase
|
|||
|
||||
private static string GetCleanedTemplate(string template)
|
||||
{
|
||||
if (template.StartsWith("api/v2")) template = template["api/v2".Length..];
|
||||
if (template.StartsWith("api/v2"))
|
||||
template = template["api/v2".Length..];
|
||||
template = PathVarRegex()
|
||||
.Replace(template, "{id}") // Replace all path variables (almost always IDs) with `{id}`
|
||||
.Replace("@me", "{id}"); // Also replace hardcoded `@me` with `{id}`
|
||||
if (template.Contains("{id}")) return template.Split("{id}")[0] + "{id}";
|
||||
if (template.Contains("{id}"))
|
||||
return template.Split("{id}")[0] + "{id}";
|
||||
return template;
|
||||
}
|
||||
|
||||
|
@ -29,11 +31,13 @@ public partial class InternalController(DatabaseContext db) : ControllerBase
|
|||
public async Task<IActionResult> GetRequestDataAsync([FromBody] RequestDataRequest req)
|
||||
{
|
||||
var endpoint = GetEndpoint(HttpContext, req.Path, req.Method);
|
||||
if (endpoint == null) throw new ApiError.BadRequest("Path/method combination is invalid");
|
||||
if (endpoint == null)
|
||||
throw new ApiError.BadRequest("Path/method combination is invalid");
|
||||
|
||||
var actionDescriptor = endpoint.Metadata.GetMetadata<ControllerActionDescriptor>();
|
||||
var template = actionDescriptor?.AttributeRouteInfo?.Template;
|
||||
if (template == null) throw new FoxnounsError("Template value was null on valid endpoint");
|
||||
if (template == null)
|
||||
throw new FoxnounsError("Template value was null on valid endpoint");
|
||||
template = GetCleanedTemplate(template);
|
||||
|
||||
// If no token was supplied, or it isn't valid base 64, return a null user ID (limiting by IP)
|
||||
|
@ -46,30 +50,41 @@ public partial class InternalController(DatabaseContext db) : ControllerBase
|
|||
|
||||
public record RequestDataRequest(string? Token, string Method, string Path);
|
||||
|
||||
public record RequestDataResponse(
|
||||
Snowflake? UserId,
|
||||
string Template);
|
||||
public record RequestDataResponse(Snowflake? UserId, string Template);
|
||||
|
||||
private static RouteEndpoint? GetEndpoint(HttpContext httpContext, string url, string requestMethod)
|
||||
private static RouteEndpoint? GetEndpoint(
|
||||
HttpContext httpContext,
|
||||
string url,
|
||||
string requestMethod
|
||||
)
|
||||
{
|
||||
var endpointDataSource = httpContext.RequestServices.GetService<EndpointDataSource>();
|
||||
if (endpointDataSource == null) return null;
|
||||
if (endpointDataSource == null)
|
||||
return null;
|
||||
var endpoints = endpointDataSource.Endpoints.OfType<RouteEndpoint>();
|
||||
|
||||
foreach (var endpoint in endpoints)
|
||||
{
|
||||
if (endpoint.RoutePattern.RawText == null) continue;
|
||||
if (endpoint.RoutePattern.RawText == null)
|
||||
continue;
|
||||
|
||||
var templateMatcher = new TemplateMatcher(TemplateParser.Parse(endpoint.RoutePattern.RawText),
|
||||
new RouteValueDictionary());
|
||||
if (!templateMatcher.TryMatch(url, new())) continue;
|
||||
var templateMatcher = new TemplateMatcher(
|
||||
TemplateParser.Parse(endpoint.RoutePattern.RawText),
|
||||
new RouteValueDictionary()
|
||||
);
|
||||
if (!templateMatcher.TryMatch(url, new()))
|
||||
continue;
|
||||
var httpMethodAttribute = endpoint.Metadata.GetMetadata<HttpMethodAttribute>();
|
||||
if (httpMethodAttribute != null &&
|
||||
!httpMethodAttribute.HttpMethods.Any(x => x.Equals(requestMethod, StringComparison.OrdinalIgnoreCase)))
|
||||
if (
|
||||
httpMethodAttribute != null
|
||||
&& !httpMethodAttribute.HttpMethods.Any(x =>
|
||||
x.Equals(requestMethod, StringComparison.OrdinalIgnoreCase)
|
||||
)
|
||||
)
|
||||
continue;
|
||||
return endpoint;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue