Skip to content

Commit

Permalink
git-remote-mediawiki: better error message when HTTP(S) access fails
Browse files Browse the repository at this point in the history
My use-case is an invalid SSL certificate. Pulling from the wiki with a
recent version of libwww-perl fails, and git-remote-mediawiki gave no
clue about the reason. Give the mediawiki API detailed error message, and
since it is not so informative, hint the user about an invalid SSL
certificate on https:// urls.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed May 29, 2013
1 parent 92758dd commit 0aa0321
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions contrib/mw-to-git/git-remote-mediawiki.perl
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,22 @@ sub mw_connect_maybe {
}
}

sub fatal_mw_error {
my $action = shift;
print STDERR "fatal: could not $action.\n";
print STDERR "fatal: '$url' does not appear to be a mediawiki\n";
if ($url =~ /^https/) {
print STDERR "fatal: make sure '$url/api.php' is a valid page\n";
print STDERR "fatal: and the SSL certificate is correct.\n";
} else {
print STDERR "fatal: make sure '$url/api.php' is a valid page.\n";
}
print STDERR "fatal: (error " .
$mediawiki->{error}->{code} . ': ' .
$mediawiki->{error}->{details} . ")\n";
exit 1;
}

## Functions for listing pages on the remote wiki
sub get_mw_tracked_pages {
my $pages = shift;
Expand Down Expand Up @@ -290,10 +306,7 @@ sub get_mw_all_pages {
aplimit => 'max'
});
if (!defined($mw_pages)) {
print STDERR "fatal: could not get the list of wiki pages.\n";
print STDERR "fatal: '$url' does not appear to be a mediawiki\n";
print STDERR "fatal: make sure '$url/api.php' is a valid page.\n";
exit 1;
fatal_mw_error("get the list of wiki pages");
}
foreach my $page (@{$mw_pages}) {
$pages->{$page->{title}} = $page;
Expand All @@ -316,10 +329,7 @@ sub get_mw_first_pages {
titles => $titles,
});
if (!defined($mw_pages)) {
print STDERR "fatal: could not query the list of wiki pages.\n";
print STDERR "fatal: '$url' does not appear to be a mediawiki\n";
print STDERR "fatal: make sure '$url/api.php' is a valid page.\n";
exit 1;
fatal_mw_error("query the list of wiki pages");
}
while (my ($id, $page) = each(%{$mw_pages->{query}->{pages}})) {
if ($id < 0) {
Expand Down

0 comments on commit 0aa0321

Please sign in to comment.