use strict; use warnings; use v5.10.0; use Data::Dumper; use MIME::Base64; use JSON; use REST::Client; use Getopt::Long; my $debug = 0; GetOptions ("debug" => \$debug) or die "Error in command line arguments\n"; my $wiki = 'http://HeartOfGold.improbable.tea'; my $api = '/mediawiki/api.php'; my $request; my $JSON = JSON->new->allow_nonref; # Create rest client and set some options my $client = REST::Client->new(); $client->setHost($wiki); $client->addHeader('format', 'json'); # First we get a login token $request = 'action=login&lgname=Marvin&lgpassword=leftdiode'; my $result = post($request); my $token = $result->{login}{token}; print "Got Token: $token\n"; $client->addHeader('token', $token); $request = "action=edit&title=LookupAutomationTest&summary=test%20summary&text=article%20content"; $result = post($request); sub post { my $query = shift @_; $query .= '&format=json'; my $req = "$api?$query"; print "Fetching data with: POST $req\n" if $debug; print Dumper $client; $client->POST($req); if ( $client->responseCode() == 200 ) { print "Got Data OK, decoding ... " if $debug; my $data = $JSON->decode( $client->responseContent() ); print Dumper $data; return $data; } else { print "Failed with code $client->responseCode()\n"; print Dumper $client->responseContent(); } }