Twiki-Upload
view release on metacpan or search on metacpan
lib/Pod/Simple/Wiki/Twiki/Upload.pm view on Meta::CPAN
package Pod::Simple::Wiki::Twiki::Upload;
use strict;
use warnings;
use Data::Dumper;
use File::Find;
use File::Spec;
use IO::File;
require Exporter;
our $VERSION = 0.3;
our @ISA = qw(Exporter);
our @EXPORT = qw(make_file_list);
sub make_file_list
{
my %bin_files = find_bin_pods();
my %files;
for my $bin (keys %bin_files) {
my $x = $bin;
$x =~ s=.*/(.+)=$1=;
$files{"$x"} = $bin_files{$bin};
}
for my $f (@{rscan_dir('lib', qr/\.(pm|pod)$/)}) {
my $base = $f;
$base =~ s/\.pm$//;
my $mod = $base;
$mod =~ s=/=::=g;
$mod =~ s/^lib:://;
if (contains_pod($f)) {
$files{$mod} = $f;
}
elsif (-e "$base.pod") {
$files{$mod} = "$base.pod";
}
}
return %files;
}
sub twiki_upload
{
my ($twikiroot, $twikiweb) = @_;
$twikiweb ||= 'Main';
my %files = make_file_list;
return unless %files;
my $user = $ENV{TWIKI_USER} || prompt("What is your twiki user id?", scalar(getpwuid($<)));
chomp($user);
$user =~ s/ $//;
system("stty -echo");
my $pass = $ENV{TWIKI_PASS} || prompt("What is your twiki password?", '');
chomp($pass);
system("stty echo");
print "\n";
require IO::Scalar or die;
import IO::Scalar;
require Pod::Simple::Wiki or die;
import Pod::Simple::Wiki;
require WWW::TWikiClient or die;
import WWW::TWikiClient;
{
package Private::Module::WWW::TWikiClient;
use strict;
use warnings;
our @ISA = qw(WWW::TWikiClient);
sub _skin_regex_authentication_failed {
return qr/Please enter your username and pas|Unrecognized user and/;
}
sub get_old_stuff {
my ($self, $topic) = @_;
$self->get("$twikiroot/edit/$twikiweb/$topic");
die unless $self->{form};
die unless $self->{form}{action};
die unless $self->{form}{inputs};
die unless $self->{form}{inputs}[0];
die unless $self->{form}{inputs}[0]{name} eq 'text';
die unless $self->{form}{inputs}[0]{type} eq 'textarea';
return $self->{form}{inputs}[0]{value};
}
sub save_new_stuff {
my ($self, $stuff) = @_;
$self->submit_form(
form_name => 'main',
fields => {
text => $stuff,
action_save => 'Save',
},
);
}
}
my $twiki = new Private::Module::WWW::TWikiClient (
verbose => 1,
auth_user => $user,
auth_passwd => $pass,
bin_url => $twikiroot,
);
die "could get twiki link" unless $twiki;
$twiki->get("$twikiroot/login/TWiki/LoginName");
$twiki->submit_form(
( run in 1.374 second using v1.01-cache-2.11-cpan-5a3173703d6 )