MojoX-CPAN-Uploader
view release on metacpan or search on metacpan
lib/MojoX/CPAN/Uploader.pm view on Meta::CPAN
package MojoX::CPAN::Uploader;
use warnings;
use strict;
use Carp;
use File::Basename;
use Mojo::Base '-base';
require Mojo::UserAgent;
require IO::Socket::SSL;
has client => sub { Mojo::UserAgent->new };
has [qw/user pass/];
has url => sub { Mojo::URL->new('https://pause.perl.org/pause/authenquery') };
has defaults => sub {
{ CAN_MULTIPART => 1,
SUBMIT_pause99_add_uri_httpupload =>
" Upload this file from my disk ",
pause99_add_uri_uri => "",
};
};
our $VERSION = '0.034';
sub auth {
my $self = shift;
croak("Basic authorization user name can't contain ':'")
if $_[0] =~ /:/;
$self->user(shift);
$self->pass(shift);
}
sub upload {
my ($self, $file, $subdir) = splice @_, 0, 3;
my $url = $self->url->clone->userinfo($self->user . ':' . $self->pass);
croak "Auth info required!" unless $self->user;
my $tx = $self->client->post(
$url, form => {
%{$self->defaults},
HIDDENNAME => $self->user,
pause99_add_uri_upload => basename($file),
pause99_add_uri_httpupload => {file => $file},
($subdir ? (pause99_add_uri_subdirtext => $subdir) : ()),
},
@_
);
return 1 if $tx->res->code == 200;
if ($tx->res->code == 406) {
my $reason = $tx->res->dom->at('blockquote.actionresponse');
my $title = $reason->at('h3');
$title = $title ? $title->all_text : 'unknown';
my @p;
my $table = 0;
$reason->find('p')->each(
sub {
return $table = 1 if $_[0]->at('table');
my $t = shift->all_text;
$t =~ s/^\s+|\s$//g;
$t =~ s/[\n\r]/ /g;
$t =~ s/\s{2,}/ /g;
push @p, $t;
}
);
( run in 1.568 second using v1.01-cache-2.11-cpan-ceb78f64989 )