diff options
author | Eric Wong <e@80x24.org> | 2016-12-14 00:31:30 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-12-14 00:31:30 +0000 |
commit | d4cec3bc3e439ab6ea9a2f89da5f98033bd95b4f (patch) | |
tree | bb83071053003b68747719f266414a336278fb96 /lib/PublicInbox | |
parent | 00488f0cfe9f81d04cd65d09ea783e860c937401 (diff) | |
download | public-inbox-d4cec3bc3e439ab6ea9a2f89da5f98033bd95b4f.tar.gz |
We'll be migrating away from it to minimize dependencies and surprises, just like the rest of public-inbox did several months ago.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/RepobrowseGitAtom.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitBlob.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitCommit.pm | 4 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitDiff.pm | 4 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitLog.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitPatch.pm | 4 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitQuery.pm | 22 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitSnapshot.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitTag.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/RepobrowseGitTree.pm | 2 |
10 files changed, 27 insertions, 19 deletions
diff --git a/lib/PublicInbox/RepobrowseGitAtom.pm b/lib/PublicInbox/RepobrowseGitAtom.pm index 9326841d..063cd2e4 100644 --- a/lib/PublicInbox/RepobrowseGitAtom.pm +++ b/lib/PublicInbox/RepobrowseGitAtom.pm @@ -21,7 +21,7 @@ sub call_git_atom { $max = 50 if $max == 0; my $git = $repo_info->{git}; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $h = $q->{h}; $h eq '' and chomp($h = $git->qx(qw(symbolic-ref --short HEAD))); diff --git a/lib/PublicInbox/RepobrowseGitBlob.pm b/lib/PublicInbox/RepobrowseGitBlob.pm index f2b38a0c..d38101ed 100644 --- a/lib/PublicInbox/RepobrowseGitBlob.pm +++ b/lib/PublicInbox/RepobrowseGitBlob.pm @@ -12,7 +12,7 @@ our @EXPORT = qw(git_blob_mime_type git_blob_stream_response); sub call_git_blob { my ($self, $req) = @_; my $git = $req->{repo_info}->{git}; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $id = $q->{id}; $id eq '' and $id = 'HEAD'; diff --git a/lib/PublicInbox/RepobrowseGitCommit.pm b/lib/PublicInbox/RepobrowseGitCommit.pm index 227dad97..2577ea34 100644 --- a/lib/PublicInbox/RepobrowseGitCommit.pm +++ b/lib/PublicInbox/RepobrowseGitCommit.pm @@ -144,7 +144,7 @@ sub git_commit_stream ($$$$) { sub call_git_commit { my ($self, $req) = @_; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $id = $q->{id}; $id eq '' and $id = 'HEAD'; @@ -160,7 +160,7 @@ sub call_git_commit { --no-notes --no-color -c), $git->abbrev, GIT_FMT, $id, '--' ]; $req->{rpipe} = $git->popen($cmd, undef, { 2 => $git->err_begin }); - my $env = $req->{cgi}->env; + my $env = $req->{env}; my $err = $env->{'psgi.errors'}; my $vin; $req->{dbuf} = ''; diff --git a/lib/PublicInbox/RepobrowseGitDiff.pm b/lib/PublicInbox/RepobrowseGitDiff.pm index 02a2c562..d65973c1 100644 --- a/lib/PublicInbox/RepobrowseGitDiff.pm +++ b/lib/PublicInbox/RepobrowseGitDiff.pm @@ -20,7 +20,7 @@ use PublicInbox::RepobrowseGitDiffCommon qw/git_diffstat_emit sub call_git_diff { my ($self, $req) = @_; my $git = $req->{repo_info}->{git}; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $id = $q->{id}; my $id2 = $q->{id2}; @@ -30,7 +30,7 @@ sub call_git_diff { my $expath = $req->{expath}; push @cmd, $expath if defined $expath; $req->{rpipe} = $git->popen(\@cmd, undef, { 2 => $git->err_begin }); - my $env = $req->{cgi}->env; + my $env = $req->{env}; my $err = $env->{'psgi.errors'}; my ($vin); $req->{dbuf} = ''; diff --git a/lib/PublicInbox/RepobrowseGitLog.pm b/lib/PublicInbox/RepobrowseGitLog.pm index 0c360e73..44b405bc 100644 --- a/lib/PublicInbox/RepobrowseGitLog.pm +++ b/lib/PublicInbox/RepobrowseGitLog.pm @@ -19,7 +19,7 @@ sub call_git_log { $max = int($max); $max = 50 if $max == 0; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $h = $q->{h}; $h eq '' and $h = 'HEAD'; diff --git a/lib/PublicInbox/RepobrowseGitPatch.pm b/lib/PublicInbox/RepobrowseGitPatch.pm index b8a44e51..eeffc5cb 100644 --- a/lib/PublicInbox/RepobrowseGitPatch.pm +++ b/lib/PublicInbox/RepobrowseGitPatch.pm @@ -15,7 +15,8 @@ my $sig = '--signature=git '.join(' ', @CMD); sub call_git_patch { my ($self, $req) = @_; my $git = $req->{repo_info}->{git}; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $env = $req->{env}; + my $q = PublicInbox::RepobrowseGitQuery->new($env); my $id = $q->{id}; $id =~ /\A[\w-]+([~\^][~\^\d])*\z/ or $id = 'HEAD'; @@ -27,7 +28,6 @@ sub call_git_patch { push @cmd, $expath; } my $rpipe = $git->popen(@cmd); - my $env = $req->{cgi}->env; my $err = $env->{'psgi.errors'}; my ($n, $res, $vin, $fh); my $end = sub { diff --git a/lib/PublicInbox/RepobrowseGitQuery.pm b/lib/PublicInbox/RepobrowseGitQuery.pm index 0ee9df04..1140f6fa 100644 --- a/lib/PublicInbox/RepobrowseGitQuery.pm +++ b/lib/PublicInbox/RepobrowseGitQuery.pm @@ -6,17 +6,25 @@ package PublicInbox::RepobrowseGitQuery; use strict; use warnings; use PublicInbox::Hval; +use URI::Escape qw(uri_unescape); my @KNOWN_PARAMS = qw(id id2 h ofs); sub new { - my ($class, $cgi) = @_; - my $self = bless {}, $class; - - foreach my $k (@KNOWN_PARAMS) { - my $v = $cgi->param($k); - $self->{$k} = defined $v ? $v : ''; + my ($class, $env) = @_; + # we don't care about multi-value + my %tmp = map { + my ($k, $v) = split('=', uri_unescape($_), 2); + $v = '' unless defined $v; + $v =~ tr/+/ /; + ($k, $v) + } split(/[&;]/, $env->{QUERY_STRING}); + + my $self = {}; + foreach (@KNOWN_PARAMS) { + my $v = $tmp{$_}; + $self->{$_} = defined $v ? $v : ''; } - $self; + bless $self, $class; } sub qs { diff --git a/lib/PublicInbox/RepobrowseGitSnapshot.pm b/lib/PublicInbox/RepobrowseGitSnapshot.pm index 8bd4b0a5..4783e150 100644 --- a/lib/PublicInbox/RepobrowseGitSnapshot.pm +++ b/lib/PublicInbox/RepobrowseGitSnapshot.pm @@ -76,7 +76,7 @@ sub call_git_snapshot ($$) { # invoked by PublicInbox::RepobrowseBase::call my @cmd = ('archive', "--prefix=$pfx", "--format=$fmt", $tree); $req->{rpipe} = $git->popen(\@cmd, undef, { 2 => $git->err_begin }); - my $env = $req->{cgi}->env; + my $env = $req->{env}; my $vin; my $end = sub { my ($n) = @_; diff --git a/lib/PublicInbox/RepobrowseGitTag.pm b/lib/PublicInbox/RepobrowseGitTag.pm index 229d5ff0..cf835aed 100644 --- a/lib/PublicInbox/RepobrowseGitTag.pm +++ b/lib/PublicInbox/RepobrowseGitTag.pm @@ -18,7 +18,7 @@ my %cmd_map = ( # type => action sub call_git_tag { my ($self, $req) = @_; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $h = $q->{h}; $h eq '' and return sub { my ($res) = @_; diff --git a/lib/PublicInbox/RepobrowseGitTree.pm b/lib/PublicInbox/RepobrowseGitTree.pm index 3900cf9d..01f29bb0 100644 --- a/lib/PublicInbox/RepobrowseGitTree.pm +++ b/lib/PublicInbox/RepobrowseGitTree.pm @@ -20,7 +20,7 @@ sub git_tree_stream { my ($self, $req, $res) = @_; # res: Plack callback my @extra = @{$req->{extra}}; my $git = $req->{repo_info}->{git}; - my $q = PublicInbox::RepobrowseGitQuery->new($req->{cgi}); + my $q = PublicInbox::RepobrowseGitQuery->new($req->{env}); my $id = $q->{id}; if ($id eq '') { chomp($id = $git->qx(qw(rev-parse --short=10 HEAD))); |