package PoorBooru::Backend::Controller::Gallery; use v5.36; use strict; use warnings; use Mojo::Base "Mojolicious::Controller"; use Mojo::JSON qw(decode_json); use SeaweedFS::FID; sub index ($self) { my $v = $self->validation; my $page = $v->optional("page")->num(1, undef)->param // 1; return $self->render( status => 404, ) if $v->has_error; my $poorbooru_api = $self->config("poorbooru_api"); my $res = $self->ua->get("$poorbooru_api/media?page=$page")->result; return $self->render(status => $res->code) if $res->is_error; $self->title("Pooru~"); my @media = map +{ media_src => $self->seaweed->url_for( SeaweedFS::FID->from_string($_->{seaweedfs_fid}) ), }, @{$res->json->{media}}; return $self->render( template => "gallery", media => \@media, pager => { $self->pager_links($res->json->{pager}) }, ); }; 1;