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)); }