api: rename /tags/new to just /tags and validate name

This commit is contained in:
Lucas 2023-02-19 09:54:52 +00:00
parent 420fc9ce97
commit 3a41ea6d0b
1 changed files with 8 additions and 4 deletions

View File

@ -10,7 +10,7 @@ use constant {
ROUTES => [
{ path => "/meta", verb => "GET" },
{ path => "/tags", verb => "GET" },
{ path => "/tags/new", verb => "POST" },
{ path => "/tags", verb => "POST" },
{ path => "/tag/:tag_id_or_name", verb => "GET" },
{ path => "/media/:media_id", verb => "GET" },
{ path => "/download/:media_id", verb => "GET" },
@ -21,6 +21,8 @@ use constant {
ROWS_PER_PAGE => 20,
};
my $TAG_NAME_RE = qr/^[0-9]*[A-Z_a-z][0-9A-Z_a-z]*$/;
sub mkpager ($)
{
my $pager = $_[0]->pager;
@ -47,12 +49,14 @@ get "/tags" => sub {
return \@tags;
};
post "/tags/new" => sub {
my $tag;
post "/tags" => sub {
my $tag_name = body_parameters->get("name");
send_error("Invalid tag name", 404) if $tag_name !~ $TAG_NAME_RE;
my $tag;
eval {
$tag = schema("default")->resultset("Tag")
->create({ name => body_parameters->get("name") });
->create({ name => $tag_name });
} or send_error("Tag exists", 409);
return {