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 )