gitweb: Route rest of action subroutines through %actions
Route rest of action subroutines, namely git_project_list and git_opml (both of which doesn't need $project) through %actions hash. This has disadvantage that all parameters are read and validated; earlier git_opml was called as soon as $action was parsed and validated, git_project_list was called as soon as $project was parsed and validated. This has advantage that all action dispatch is grouped in one place. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
134a6941ec
commit
77a153fd92
@ -155,11 +155,6 @@ if (defined $action) {
|
||||
if ($action =~ m/[^0-9a-zA-Z\.\-_]/) {
|
||||
die_error(undef, "Invalid action parameter");
|
||||
}
|
||||
# action which does not check rest of parameters
|
||||
if ($action eq "opml") {
|
||||
git_opml();
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
our $project = ($cgi->param('p') || $ENV{'PATH_INFO'});
|
||||
@ -179,9 +174,6 @@ if (defined $project) {
|
||||
die_error(undef, "No such project");
|
||||
}
|
||||
$ENV{'GIT_DIR'} = "$projectroot/$project";
|
||||
} else {
|
||||
git_project_list();
|
||||
exit;
|
||||
}
|
||||
|
||||
our $file_name = $cgi->param('f');
|
||||
@ -255,9 +247,16 @@ my %actions = (
|
||||
"tags" => \&git_tags,
|
||||
"tree" => \&git_tree,
|
||||
"snapshot" => \&git_snapshot,
|
||||
# those below don't need $project
|
||||
"opml" => \&git_opml,
|
||||
"project_list" => \&git_project_list,
|
||||
);
|
||||
|
||||
$action = 'summary' if (!defined($action));
|
||||
if (defined $project) {
|
||||
$action ||= 'summary';
|
||||
} else {
|
||||
$action ||= 'project_list';
|
||||
}
|
||||
if (!defined($actions{$action})) {
|
||||
die_error(undef, "Unknown action");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user