diff options
Diffstat (limited to 'Bugzilla/BugUrl/SourceForge.pm')
-rw-r--r-- | Bugzilla/BugUrl/SourceForge.pm | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/Bugzilla/BugUrl/SourceForge.pm b/Bugzilla/BugUrl/SourceForge.pm index 69d4f98c2..11cdd0ff1 100644 --- a/Bugzilla/BugUrl/SourceForge.pm +++ b/Bugzilla/BugUrl/SourceForge.pm @@ -9,17 +9,21 @@ package Bugzilla::BugUrl::SourceForge; use strict; use base qw(Bugzilla::BugUrl); -use Bugzilla::Error; -use Bugzilla::Util; - ############################### #### Methods #### ############################### sub should_handle { my ($class, $uri) = @_; + + # SourceForge tracker URLs have only one form: + # http://sourceforge.net/tracker/?func=detail&aid=111&group_id=111&atid=111 return ($uri->authority =~ /^sourceforge.net$/i - and $uri->path =~ m|/tracker/|) ? 1 : 0; + and $uri->path =~ m|/tracker/| + and $uri->query_param('func') eq 'detail' + and $uri->query_param('aid') + and $uri->query_param('group_id') + and $uri->query_param('atid')) ? 1 : 0; } sub _check_value { @@ -27,19 +31,10 @@ sub _check_value { my $uri = $class->SUPER::_check_value(@_); - # SourceForge tracker URLs have only one form: - # http://sourceforge.net/tracker/?func=detail&aid=111&group_id=111&atid=111 - if ($uri->query_param('func') eq 'detail' and $uri->query_param('aid') - and $uri->query_param('group_id') and $uri->query_param('atid')) - { - # Remove any # part if there is one. - $uri->fragment(undef); - return $uri; - } - else { - my $value = $uri->as_string; - ThrowUserError('bug_url_invalid', { url => $value }); - } + # Remove any # part if there is one. + $uri->fragment(undef); + + return $uri; } 1; |