Return 410 Gone (rather than 500) if an output is no longer available

This commit is contained in:
Eelco Dolstra 2014-02-26 11:38:02 +01:00
parent 6327edd63f
commit 66b8c1a9e0
4 changed files with 11 additions and 10 deletions

View file

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

View file

@ -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';

View file

@ -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;

View file

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