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\.\-_]/) {
|
if ($action =~ m/[^0-9a-zA-Z\.\-_]/) {
|
||||||
die_error(undef, "Invalid action parameter");
|
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'});
|
our $project = ($cgi->param('p') || $ENV{'PATH_INFO'});
|
||||||
@ -179,9 +174,6 @@ if (defined $project) {
|
|||||||
die_error(undef, "No such project");
|
die_error(undef, "No such project");
|
||||||
}
|
}
|
||||||
$ENV{'GIT_DIR'} = "$projectroot/$project";
|
$ENV{'GIT_DIR'} = "$projectroot/$project";
|
||||||
} else {
|
|
||||||
git_project_list();
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
our $file_name = $cgi->param('f');
|
our $file_name = $cgi->param('f');
|
||||||
@ -255,9 +247,16 @@ my %actions = (
|
|||||||
"tags" => \&git_tags,
|
"tags" => \&git_tags,
|
||||||
"tree" => \&git_tree,
|
"tree" => \&git_tree,
|
||||||
"snapshot" => \&git_snapshot,
|
"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})) {
|
if (!defined($actions{$action})) {
|
||||||
die_error(undef, "Unknown action");
|
die_error(undef, "Unknown action");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user