forked from lix-project/hydra
Return 410 Gone (rather than 500) if an output is no longer available
This commit is contained in:
parent
6327edd63f
commit
66b8c1a9e0
4 changed files with 11 additions and 10 deletions
|
@ -84,10 +84,8 @@ sub pkg : Chained('nix') PathPart Args(1) {
|
|||
|| notFound($c, "No such package in this channel.");
|
||||
}
|
||||
|
||||
unless (all { isValidPath($_->path) } $c->stash->{build}->buildoutputs->all) {
|
||||
$c->response->status(410); # "Gone"
|
||||
error($c, "Build " . $c->stash->{build}->id . " is no longer available.");
|
||||
}
|
||||
gone($c, "Build " . $c->stash->{build}->id . " is no longer available.")
|
||||
unless all { isValidPath($_->path) } $c->stash->{build}->buildoutputs->all;
|
||||
|
||||
$c->stash->{manifestUri} = $c->uri_for($self->action_for("manifest"), $c->req->captures);
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ sub output : Chained('buildChain') PathPart Args(1) {
|
|||
error($c, "This build is not finished yet.") unless $build->finished;
|
||||
my $output = $build->buildoutputs->find({name => $outputName});
|
||||
notFound($c, "This build has no output named ‘$outputName’") unless defined $output;
|
||||
error($c, "Output is not available.") unless isValidPath $output->path;
|
||||
gone($c, "Output is no longer available.") unless isValidPath $output->path;
|
||||
|
||||
$c->response->header('Content-Disposition', "attachment; filename=\"build-${\$build->id}-${\$outputName}.nar.bz2\"");
|
||||
$c->stash->{current_view} = 'NixNAR';
|
||||
|
|
|
@ -230,10 +230,7 @@ sub nar :Local :Args(1) {
|
|||
|
||||
$path = ($ENV{NIX_STORE_DIR} || "/nix/store")."/$path";
|
||||
|
||||
if (!isValidPath($path)) {
|
||||
$c->response->status(410); # "Gone"
|
||||
error($c, "Path " . $path . " is no longer available.");
|
||||
}
|
||||
gone($c, "Path " . $path . " is no longer available.") unless isValidPath($path);
|
||||
|
||||
$c->stash->{current_view} = 'NixNAR';
|
||||
$c->stash->{storePath} = $path;
|
||||
|
|
|
@ -15,7 +15,7 @@ use feature qw/switch/;
|
|||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(
|
||||
getBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild
|
||||
error notFound accessDenied
|
||||
error notFound gone accessDenied
|
||||
forceLogin requireUser requireProjectOwner requireAdmin requirePost isAdmin isProjectOwner
|
||||
trim
|
||||
getLatestFinishedEval
|
||||
|
@ -103,6 +103,12 @@ sub notFound {
|
|||
}
|
||||
|
||||
|
||||
sub gone {
|
||||
my ($c, $msg) = @_;
|
||||
error($c, $msg, 410);
|
||||
}
|
||||
|
||||
|
||||
sub accessDenied {
|
||||
my ($c, $msg) = @_;
|
||||
error($c, $msg, 403);
|
||||
|
|
Loading…
Reference in a new issue