From: djmcgrath Date: Mon, 1 Dec 2008 20:54:23 +0000 (+0000) Subject: * Missed DebianBugs.pl in the previous merge X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=0b8cc0cae8719a4a06ee34ec6bd99f911efc1d9c;p=infobot.git * Missed DebianBugs.pl in the previous merge git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1852 c11ca15a-4712-0410-83d8-924469b57eb5 --- diff --git a/src/Modules/DebianBugs.pm b/src/Modules/DebianBugs.pm index eccefd7..b218ccf 100644 --- a/src/Modules/DebianBugs.pm +++ b/src/Modules/DebianBugs.pm @@ -12,35 +12,15 @@ use strict; use vars qw($VERSION $DEBUG); -use LWP::UserAgent; +use SOAP::Lite; $VERSION = q($Rev: $); $DEBUG ||= 0; -sub get_url($) { - my $url = shift; +sub bug_info { + my ($bug_num,$options) = @_; - my $ua = LWP::UserAgent->new; - $ua->agent("blootbug_debbugs/$VERSION"); - - # Create a request - my $req = HTTP::Request->new( GET => $url ); - - # Pass request to the user agent and get a response back - my $res = $ua->request($req); - - # Check the outcome of the response - if ( $res->is_success ) { - return $res->content; - } - else { - return undef; - } -} - -sub bug_info($;$) { - my $bug_num = shift; - my $options = shift || {}; + $options || = {}; if ( not $bug_num =~ /^\#?\d+$/ ) { warn "Bug is not a number!" and return undef @@ -48,69 +28,28 @@ sub bug_info($;$) { return "Bug is not a number!"; } $bug_num =~ s/^\#//; - my $report = - get_url("http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$bug_num"); - - # strip down report to relevant header information. - $report =~ /(.+?)
/s; - $report = $1; - my $bug = {}; - ( $bug->{num}, $bug->{title} ) = - $report =~ m#\#(\d+)\<\/A\>\(.+?)\<\/H1\>#is; - if ($DEBUG) { - print "Bugnum: $bug->{num}\nTitle: $bug->{title}\nReport: $report\n"; - } - $bug->{title} =~ s/</\{title} =~ s/>/\>/g; - $bug->{title} =~ s/"/\"/g; - $bug->{severity} = 'n'; #Default severity is normal - my @bug_flags = split /(?{severity} ) = - $bug_flag =~ /(wishlist|minor|normal|important|serious|grave)/i; - - # Just leave the leter instead of the whole thing. - $bug->{severity} =~ s/^(.).+$/$1/; - } - elsif ( $bug_flag =~ /Package:/ ) { - ( $bug->{package} ) = $bug_flag =~ /\"\>\s*([^\<\>\"]+?)\s*\<\/a\>/; - } - elsif ( $bug_flag =~ /Reported by:/ ) { - ( $bug->{reporter} ) = $bug_flag =~ /\"\>\s*(.+?)\s*\<\/a\>/; - - # strip < and > - $bug->{reporter} =~ s/</\{reporter} =~ s/>/\>/g; - } - elsif ( $bug_flag =~ /Date:/ ) { - ( $bug->{date} ) = $bug_flag =~ /Date:\s*(\w.+?)\s*$/; - - #ditch extra whitespace - $bug->{date} =~ s/\s{2,}/\ /; - } - elsif ( $bug_flag =~ /Tags:/ ) { - ( $bug->{tags} ) = $bug_flag =~ /strong\>\s*(.+?)\s*\<\/strong\>/; - } - elsif ( $bug_flag =~ /merged with / ) { - $bug_flag =~ s/merged with\s*//; - $bug_flag =~ s/\<[^\>]+\>//g; - $bug_flag =~ s/\s//sg; - $bug->{merged_with} = $bug_flag; - - } - elsif ( $bug_flag =~ /\>Done:\{done} = 1; - } - elsif ( $bug_flag =~ /\>Fixed\{done} = 1; - } + my $soap = SOAP::Lite->url->('Debbugs/SOAP/1')-> + proxy('http://bugs.debian.org/cgi-bin/soap.cgi'); + $soap->transport->env_proxy(); + my $result = $soap->get_status(bug => $bug_num)->result(); + if (not defined $result) { + return "No such bug (or some kind of error)"; } - + my $bug = {}; + $bug->{num} = $result->{bug_num}; + $bug->{title} = $result->{subject}; + $bug->{severity} = $result->{severity}; #Default severity is normal + # Just leave the leter instead of the whole thing. + $bug->{severity} =~ s/^(.).+$/$1/; + $bug->{package} = $result->{package}; + $bug->{reporter} = $result->{submitter}; + $bug->{date} = $result->{date}; + $bug->{tags} = $result->{keywords}; + $bug->{done} = defined $result->{done} and length $result->{done}; + $bug->{merged_with} = $result->{mergedwith}; # report bug - $report = ''; + my $report = ''; $report .= 'DONE:' if defined $bug->{done} and $bug->{done}; $report .= '#' . $bug->{num} . ':' @@ -125,10 +64,6 @@ sub bug_info($;$) { . join( ',', splice( @{ [ split( /,/, $bug->{merged_with} ) ] }, 0, 3 ) ) . ']' if defined $bug->{merged_with}; - if ($DEBUG) { - use Data::Dumper; - print STDERR Dumper($bug); - } return $report; }