diff --git a/lib/PoorBooru/API/V0.pm b/lib/PoorBooru/API/V0.pm index 81f0486..337eeb9 100644 --- a/lib/PoorBooru/API/V0.pm +++ b/lib/PoorBooru/API/V0.pm @@ -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 {