backend: refactor communication with api

This commit is contained in:
Lucas 2023-02-19 15:50:06 +00:00
parent 7d827212c1
commit a0d3601c57

View File

@ -6,9 +6,11 @@ our $VERSION = v0.0.1;
my $POORBOORU_API = setting("poorbooru_api"); my $POORBOORU_API = setting("poorbooru_api");
sub http_tiny () sub api_request ($$;%)
{ {
return HTTP::Tiny->new( my ($method, $path, $params_hashref) = @_;
my $http = HTTP::Tiny->new(
timeout => 15, timeout => 15,
verify_SSL => true, verify_SSL => true,
agent => setting("appname") . " backend " . agent => setting("appname") . " backend " .
@ -19,8 +21,14 @@ sub http_tiny ()
"Content-Type" => "application/json", "Content-Type" => "application/json",
}, },
); );
my $params = $http->www_form_urlencode($params_hashref // {});
return $http->request($method, "$POORBOORU_API$path" .
($params ne "" ? "?$params" : ""));
} }
sub api_get ($;%) { api_request("GET", shift, @_) }
sub nav_pager ($$) sub nav_pager ($$)
{ {
my ($p, $uri) = @_; my ($p, $uri) = @_;
@ -54,7 +62,7 @@ get "/" => sub {
my $page = query_parameters->get("page") // 1; my $page = query_parameters->get("page") // 1;
send_error("Invalid page number", 400) if $page !~ /^[1-9][0-9]*$/; send_error("Invalid page number", 400) if $page !~ /^[1-9][0-9]*$/;
my $res = http_tiny()->get("$POORBOORU_API/media?page=$page"); my $res = api_get("/media", { page => $page });
send_error("API error", 500) if !$res->{success}; send_error("API error", 500) if !$res->{success};
my $data = decode_json($res->{content}); my $data = decode_json($res->{content});
@ -75,9 +83,7 @@ get "/tags" => sub {
my $page = query_parameters->get("page") // 1; my $page = query_parameters->get("page") // 1;
send_error("Invalid page number", 400) if $page !~ /^[1-9][0-9]*$/; send_error("Invalid page number", 400) if $page !~ /^[1-9][0-9]*$/;
my $http = http_tiny(); my $res = api_get("/tags", { page => $page });
my $params = $http->www_form_urlencode({ page => $page });
my $res = $http->get("$POORBOORU_API/tags?$params");
send_error("API error", 500) if !$res->{success}; send_error("API error", 500) if !$res->{success};
my $data = decode_json($res->{content}); my $data = decode_json($res->{content});
@ -97,7 +103,7 @@ get "/tags" => sub {
get "/tag/:tag_id_or_name" => sub { get "/tag/:tag_id_or_name" => sub {
my $tag_id_or_name = route_parameters->get("tag_id_or_name"); my $tag_id_or_name = route_parameters->get("tag_id_or_name");
my $res = http_tiny()->get("$POORBOORU_API/tag/$tag_id_or_name"); my $res = api_get("/tag/$tag_id_or_name");
send_error("API error", 500) if !$res->{success}; send_error("API error", 500) if !$res->{success};
my $data = decode_json($res->{content}); my $data = decode_json($res->{content});