]> git.donarmstrong.com Git - infobot.git/commitdiff
* Missed DebianBugs.pl in the previous merge
authordjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 1 Dec 2008 20:54:23 +0000 (20:54 +0000)
committerdjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 1 Dec 2008 20:54:23 +0000 (20:54 +0000)
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1852 c11ca15a-4712-0410-83d8-924469b57eb5

src/Modules/DebianBugs.pm

index eccefd7ec5c33fd36348283b4f85b3c127a54467..b218ccf90823dc5913191c05d3710f2c143bd52f 100644 (file)
@@ -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 =~ /<HEAD>(.+?)<HR>/s;
-    $report = $1;
-    my $bug = {};
-    ( $bug->{num}, $bug->{title} ) =
-      $report =~ m#\#(\d+)\<\/A\>\<BR\>(.+?)\<\/H1\>#is;
-    if ($DEBUG) {
-        print "Bugnum: $bug->{num}\nTitle: $bug->{title}\nReport: $report\n";
-    }
-    $bug->{title} =~ s/&lt;/\</g;
-    $bug->{title} =~ s/&gt;/\>/g;
-    $bug->{title} =~ s/&quot;/\"/g;
-    $bug->{severity} = 'n';    #Default severity is normal
-    my @bug_flags = split /(?<!\&.t)[;\.]\n/s, $report;
-    foreach my $bug_flag (@bug_flags) {
-        print "Bug_flag: $bug_flag\n" if $DEBUG;
-        if ( $bug_flag =~ /Severity:/i ) {
-            ( $bug->{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 &lt; and &gt;
-            $bug->{reporter} =~ s/&lt;/\</g;
-            $bug->{reporter} =~ s/&gt;/\>/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:\</ ) {
-            $bug->{done} = 1;
-        }
-        elsif ( $bug_flag =~ /\>Fixed\</ ) {
-            $bug->{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;
 }