[libmediawiki-api-perl] 01/09: Imported Upstream version 0.40
gregor herrmann
gregoa at debian.org
Fri Oct 17 14:27:18 UTC 2014
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to branch master
in repository libmediawiki-api-perl.
commit c7f8366bffd7b509d905819a2ab25981f3f8a132
Author: gregor herrmann <gregoa at debian.org>
Date: Fri Oct 17 16:16:13 2014 +0200
Imported Upstream version 0.40
---
Changes | 5 +++
MANIFEST | 3 +-
META.json | 45 ++++++++++++++++++++++++++
META.yml | 46 +++++++++++++--------------
README | 5 ++-
lib/MediaWiki/API.pm | 90 +++++++++++++++++++++++-----------------------------
6 files changed, 119 insertions(+), 75 deletions(-)
diff --git a/Changes b/Changes
index 7d7a25a..eee3cd8 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
Revision history for MediaWiki-API
+0.40 2014-09-13
+ Apologies for the lack of updates and the speed to implement some fixes but I have been busy on other projects.
+ Edit token code has been reworked somewhat to make it simpler, and a bugfix applied for an issue with downloading
+ images over https using the buildin Download() function.
+
0.39 2012-05-20
Added automatic support for handling tokens in the MediaWiki::API->Edit function for (Un)watch, Send e-mail
and Patrol changes. (Un)watch already worked but wasn't documented.
diff --git a/MANIFEST b/MANIFEST
index 1267d4c..4179f60 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -9,4 +9,5 @@ t/10-api.t
t/98-pod-coverage.t
t/99-pod.t
t/testimage.png
-META.yml Module meta-data (added by MakeMaker)
+META.yml Module YAML meta-data (added by MakeMaker)
+META.json Module JSON meta-data (added by MakeMaker)
diff --git a/META.json b/META.json
new file mode 100644
index 0000000..ca5f324
--- /dev/null
+++ b/META.json
@@ -0,0 +1,45 @@
+{
+ "abstract" : "Provides a Perl interface to the MediaWiki API (http://www.mediawiki.org/wiki/API)",
+ "author" : [
+ "Jools Wills <buzz at exotica.org.uk>"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060",
+ "license" : [
+ "unknown"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "MediaWiki-API",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "Carp" : "0",
+ "Encode" : "0",
+ "JSON" : "0",
+ "LWP::UserAgent" : "0",
+ "Test::More" : "0.98"
+ }
+ }
+ },
+ "release_status" : "stable",
+ "version" : "0.40"
+}
diff --git a/META.yml b/META.yml
index 8e6c995..6b55dd7 100644
--- a/META.yml
+++ b/META.yml
@@ -1,26 +1,26 @@
---- #YAML:1.0
-name: MediaWiki-API
-version: 0.39
-abstract: Provides a Perl interface to the MediaWiki API (http://www.mediawiki.org/wiki/API)
+---
+abstract: 'Provides a Perl interface to the MediaWiki API (http://www.mediawiki.org/wiki/API)'
author:
- - Jools Wills <buzz at exotica.org.uk>
-license: GPL-3+
-distribution_type: module
-configure_requires:
- ExtUtils::MakeMaker: 0
+ - 'Jools Wills <buzz at exotica.org.uk>'
build_requires:
- ExtUtils::MakeMaker: 0
-requires:
- Carp: 0
- Encode: 0
- JSON: 0
- LWP::UserAgent: 0
- Test::More: 0.98
-no_index:
- directory:
- - t
- - inc
-generated_by: ExtUtils::MakeMaker version 6.57_05
+ ExtUtils::MakeMaker: '0'
+configure_requires:
+ ExtUtils::MakeMaker: '0'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060'
+license: unknown
meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: '1.4'
+name: MediaWiki-API
+no_index:
+ directory:
+ - t
+ - inc
+requires:
+ Carp: '0'
+ Encode: '0'
+ JSON: '0'
+ LWP::UserAgent: '0'
+ Test::More: '0.98'
+version: '0.40'
diff --git a/README b/README
index c636c80..0b7aca3 100644
--- a/README
+++ b/README
@@ -4,6 +4,9 @@ This module provides an interface between perl and the MediaWiki API
(http://www.mediawiki.org/wiki/API) allowing creation of scripts to automate
editing and extraction of data from MediaWiki driven sites like Wikipedia.
+The latest source/development version is available at
+https://github.com/joolswills/mediawikiapi
+
STANDARD INSTALLATION
This module requires the following perl modules
@@ -69,7 +72,7 @@ You can also look for information at:
COPYRIGHT AND LICENCE
-Copyright (C) 2009 - 2012 Jools Wills
+Copyright (C) 2009 - 2014 Jools Wills
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/MediaWiki/API.pm b/lib/MediaWiki/API.pm
index 2ec4f6e..609bed3 100644
--- a/lib/MediaWiki/API.pm
+++ b/lib/MediaWiki/API.pm
@@ -46,7 +46,7 @@ Version 0.39
=cut
-our $VERSION = "0.39";
+our $VERSION = "0.40";
=head1 SYNOPSIS
@@ -795,7 +795,7 @@ sub download {
my $url = @{ $pageref->{imageinfo} }[0]->{url};
- unless ( $url =~ /^http\:\/\// ) {
+ unless ( $url =~ /^https?\:\/\// ) {
return $self->_error(ERR_PARAMS,'The API returned a relative path. You need to configure the url where files are stored in {config}->{files_url}')
unless ( defined $self->{config}->{files_url} );
$url = $self->{config}->{files_url} . $url;
@@ -862,80 +862,70 @@ sub _make_querystring {
# gets a token for a specified parameter and sets it in the query for the call
sub _get_set_tokens {
my ($self, $query) = @_;
- my ($prop, $title, $token);
-
- my $action = $query->{action};
-
- if ( $action eq 'move' ) {
- $title = $query->{from};
- } elsif ( $action eq 'upload' ) {
- $action = 'edit';
- $title = $query->{filename};
- } elsif ( $action eq 'emailuser' ) {
- $action = 'email';
- $title = 'User:' . $query->{target};
- } else {
- $title = $query->{title};
- }
- # check if we have a cached token.
- if ( exists( $self->{config}->{tokens}->{$action} ) ) {
- $query->{token} = $self->{config}->{tokens}->{$action};
+ # Note that although currently many of the tokens are equivalent, we cache them separately
+ # in case this was to change.
+ if ( exists( $self->{config}->{tokens}->{$query->{action}} ) ) {
+ $query->{token} = $self->{config}->{tokens}->{$query->{action}};
return 1;
}
- # if we are doing an import, get the edit token using Main_Page as API docs suggest.
- if ( $action eq 'import' ) {
- # if a title is supplied use that page to get the edit token instead of Main_Page
- if ( defined $query->{title} ) {
- $title = $query->{title};
- } else {
- $title = "Main_Page";
- }
+ # set the token actions and title depending on edit action
+ my $tokaction = $query->{action};
+ my $title = $query->{title};
+ if ( $query->{action} eq 'move' ) {
+ $title = $query->{from};
+ } elsif ( $query->{action} eq 'upload' ) {
+ $tokaction = 'edit';
+ $title = $query->{filename};
+ } elsif ( $query->{action} eq 'emailuser' ) {
+ $tokaction = 'email';
+ $title = 'User:' . $query->{target};
+ } elsif ( $query->{action} eq 'import' ) {
+ # if title was not specified get the import token using Main_Page as API docs suggest.
+ $title = "Main_Page" unless defined $query->{title};
}
- # set the properties we want to extract based on the action
- if ( $action eq 'rollback' ) {
- $prop = 'revisions';
- } else {
- $prop = 'info';
+ # set the properties and token name we want to extract based on the action
+ # may merge into above ifdef depending on other token implementations
+ my $prop = 'info';
+ my $token = 'intoken';
+ my $tokquery = { action => 'query', prop => $prop, $token => $tokaction, titles => $title };
+ if ( $tokaction eq 'rollback' ) {
+ $prop = 'revisions';
+ $token = 'rvtoken';
+ } elsif ( $tokaction eq 'patrol' ) {
+ $tokquery = { action => 'query', list => 'recentchanges', rclimit => '1', rctoken => $tokaction };
}
- $token = 'intoken';
- $token = 'rvtoken' if ( $action eq 'rollback' );
-
my $ref;
- if ( $action eq 'patrol' ) {
- $ref = $self->api( { action => 'query', list => 'recentchanges', rclimit => '1', rctoken => $action } );
- } else {
- $ref = $self->api( { action => 'query', prop => $prop, $token => $action, titles => $title } );
- }
+ $ref = $self->api( $tokquery );
return undef unless $ref;
my ($pageid, $pageref) = each %{ $ref->{query}->{pages} };
# if the page doesn't exist and we aren't editing/creating a new page then return an error
- if ( defined $pageref->{missing} && $action ne 'edit' && $action ne 'import' ) {
- return $self->_error( ERR_EDIT, "Unable to $action page '$title'. Page does not exist.")
+ if ( defined $pageref->{missing} && $tokaction ne 'edit' && $tokaction ne 'import' ) {
+ return $self->_error( ERR_EDIT, "Unable to $tokaction page '$title'. Page does not exist.")
}
- if ( $action eq 'rollback' ) {
- $query->{token} = @{ $pageref->{revisions} }[0]->{$action.'token'};
+ if ( $query->{action} eq 'rollback' ) {
+ $query->{token} = @{ $pageref->{revisions} }[0]->{$tokaction.'token'};
my $lastuser = @{ $pageref->{revisions} }[0]->{user};
$query->{user} = @{ $pageref->{revisions} }[0]->{user} unless defined $query->{user};
return $self->_error( ERR_EDIT, "Unable to rollback edits from user '$query->{user}' for page '$title'. Last edit was made by user $lastuser" ) if ( $query->{user} ne $lastuser );
- } elsif ( $action eq 'patrol' ) {
+ } elsif ( $tokaction eq 'patrol' ) {
$query->{token} = @{$ref->{query}->{recentchanges}}[0]->{patroltoken};
} else {
- $query->{token} = $pageref->{$action.'token'};
+ $query->{token} = $pageref->{$tokaction.'token'};
}
- return $self->_error( ERR_EDIT, "Unable to get an edit token for action '$action'." ) unless ( defined $query->{token} );
+ return $self->_error( ERR_EDIT, "Unable to get an edit token for action '$tokaction'." ) unless ( defined $query->{token} );
# cache the token. rollback tokens are specific for the page name and last edited user so can not be cached. Note that although currently many of the tokens
# are equivalent, we cache them separately in case this was to change.
- if ( $action ne 'rollback' ) {
- $self->{config}->{tokens}->{$action} = $query->{token};
+ if ( $query->{action} ne 'rollback' ) {
+ $self->{config}->{tokens}->{$query->{action}} = $query->{token};
}
return 1;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmediawiki-api-perl.git
More information about the Pkg-perl-cvs-commits
mailing list