From d44435ac734aea02acc345d6b77649716ba9be7b Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Vuotto Date: Sat, 3 May 2025 17:44:45 +0000 Subject: [PATCH] api/v0: add no_redirect option for randomized endpoints --- lib/Pooru/API/V0/Controller/Media.pm | 10 ++++++++++ lib/Pooru/API/V0/Controller/Tags.pm | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/Pooru/API/V0/Controller/Media.pm b/lib/Pooru/API/V0/Controller/Media.pm index 6cc7ec0..686c6f8 100644 --- a/lib/Pooru/API/V0/Controller/Media.pm +++ b/lib/Pooru/API/V0/Controller/Media.pm @@ -86,6 +86,14 @@ sub show ($self) sub random ($self) { + my $v = $self->validation; + + my $no_redirect = $v->optional("no_redirect")->param; + return $self->render( + json => {error => "Invalid no_redirect."}, + status => 400, + ) if $v->has_error; + my $id = $self->media_model->random_id; return $self->render( @@ -93,6 +101,8 @@ sub random ($self) status => 404, ) if !defined($id); + return $self->render(json => $id) if $no_redirect; + return $self->redirect_to("show_media", media_id => $id); } diff --git a/lib/Pooru/API/V0/Controller/Tags.pm b/lib/Pooru/API/V0/Controller/Tags.pm index d38d3ae..5e0b1e1 100644 --- a/lib/Pooru/API/V0/Controller/Tags.pm +++ b/lib/Pooru/API/V0/Controller/Tags.pm @@ -47,6 +47,14 @@ sub show ($self) sub random ($self) { + my $v = $self->validation; + + my $no_redirect = $v->optional("no_redirect")->param; + return $self->render( + json => {error => "Invalid no_redirect."}, + status => 400, + ) if $v->has_error; + my $id = $self->tags_model->random_id; return $self->render( @@ -54,6 +62,8 @@ sub random ($self) status => 404, ) if !defined($id); + return $self->render(json => $id) if $no_redirect; + return $self->redirect_to( $self->url_for("show_tag", tag_id_or_display => $id)); }