App-SpamcupNG
view release on metacpan or search on metacpan
"runtime" : {
"requires" : {
"Class::Accessor" : "0.51",
"DBD::SQLite" : "1.74",
"DBI" : "1.643",
"DateTime" : "1.59",
"HTML::Form" : "6.11",
"HTML::TreeBuilder::XPath" : "0.14",
"HTTP::CookieJar::LWP" : "0.014",
"HTTP::Cookies" : "6.01",
"HTTP::Request" : "6.44",
"HTTP::Request::Common" : "6.44",
"LWP::Protocol::https" : "6.14",
"LWP::UserAgent" : "6.72",
"Log::Log4perl" : "1.57",
"Mozilla::PublicSuffix" : "v1.0.6",
"Set::Tiny" : "0.04",
"YAML::XS" : "0.88",
"perl" : "5.014004"
}
},
"test" : {
version: '0.020'
requires:
Class::Accessor: '0.51'
DBD::SQLite: '1.74'
DBI: '1.643'
DateTime: '1.59'
HTML::Form: '6.11'
HTML::TreeBuilder::XPath: '0.14'
HTTP::CookieJar::LWP: '0.014'
HTTP::Cookies: '6.01'
HTTP::Request: '6.44'
HTTP::Request::Common: '6.44'
LWP::Protocol::https: '6.14'
LWP::UserAgent: '6.72'
Log::Log4perl: '1.57'
Mozilla::PublicSuffix: v1.0.6
Set::Tiny: '0.04'
YAML::XS: '0.88'
perl: '5.014004'
resources:
bugtracker: https://github.com/glasswalk3r/App-SpamcupNG/issues
homepage: https://github.com/glasswalk3r/App-SpamcupNG
Makefile.PL view on Meta::CPAN
"NAME" => "App::SpamcupNG",
"PREREQ_PM" => {
"Class::Accessor" => "0.51",
"DBD::SQLite" => "1.74",
"DBI" => "1.643",
"DateTime" => "1.59",
"HTML::Form" => "6.11",
"HTML::TreeBuilder::XPath" => "0.14",
"HTTP::CookieJar::LWP" => "0.014",
"HTTP::Cookies" => "6.01",
"HTTP::Request" => "6.44",
"HTTP::Request::Common" => "6.44",
"LWP::Protocol::https" => "6.14",
"LWP::UserAgent" => "6.72",
"Log::Log4perl" => "1.57",
"Mozilla::PublicSuffix" => "1.0.6",
"Set::Tiny" => "0.04",
"YAML::XS" => "0.88"
},
"TEST_REQUIRES" => {
"ExtUtils::MakeMaker" => 0,
"File::Spec" => 0,
Makefile.PL view on Meta::CPAN
"Class::Accessor" => "0.51",
"DBD::SQLite" => "1.74",
"DBI" => "1.643",
"DateTime" => "1.59",
"ExtUtils::MakeMaker" => 0,
"File::Spec" => 0,
"HTML::Form" => "6.11",
"HTML::TreeBuilder::XPath" => "0.14",
"HTTP::CookieJar::LWP" => "0.014",
"HTTP::Cookies" => "6.01",
"HTTP::Request" => "6.44",
"HTTP::Request::Common" => "6.44",
"LWP::Protocol::https" => "6.14",
"LWP::UserAgent" => "6.72",
"Log::Log4perl" => "1.57",
"Mozilla::PublicSuffix" => "1.0.6",
"Perl::Tidy::Sweetened" => "1.18",
"Pod::Tidy" => "0.10",
"Set::Tiny" => "0.04",
"Test::Exception" => "0.43",
"Test::Kwalitee" => "1.28",
"Test::More" => 0,
# Prereqs are detected automatically. You do not need to edit this file
requires "Class::Accessor" => "0.51";
requires "DBD::SQLite" => "1.74";
requires "DBI" => "1.643";
requires "DateTime" => "1.59";
requires "HTML::Form" => "6.11";
requires "HTML::TreeBuilder::XPath" => "0.14";
requires "HTTP::CookieJar::LWP" => "0.014";
requires "HTTP::Cookies" => "6.01";
requires "HTTP::Request" => "6.44";
requires "HTTP::Request::Common" => "6.44";
requires "LWP::Protocol::https" => "6.14";
requires "LWP::UserAgent" => "6.72";
requires "Log::Log4perl" => "1.57";
requires "Mozilla::PublicSuffix" => "v1.0.6";
requires "Set::Tiny" => "0.04";
requires "YAML::XS" => "0.88";
requires "perl" => "5.014004";
on 'test' => sub {
requires "ExtUtils::MakeMaker" => "0";
lib/App/SpamcupNG/UserAgent.pm view on Meta::CPAN
package App::SpamcupNG::UserAgent;
use warnings;
use strict;
use Carp qw(confess);
use LWP::UserAgent 6.72;
use HTTP::Request 6.44;
use Log::Log4perl 1.57 qw(get_logger :levels);
use HTTP::CookieJar::LWP 0.014;
use Mozilla::PublicSuffix v1.0.6;
use HTTP::Request::Common 6.44 qw(POST);
our $VERSION = '0.020'; # VERSION
=head1 NAME
App::SpamcupNG::UserAgent - the SpamcupNG HTTP user agent
=head1 SYNOPSIS
=head1 DESCRIPTION
lib/App/SpamcupNG/UserAgent.pm view on Meta::CPAN
=item *
password: the password of a Spamcop account.
=back
Returns the HTTP response (HTML content) as a scalar reference.
=cut
# copied from HTTP::Request::as_string
sub _request_line {
my $request = shift;
my $req_line = $request->method || "-";
my $uri = $request->uri;
$uri = ( defined $uri ) ? $uri->as_string : "-";
$req_line .= " $uri";
my $proto = $request->protocol;
$req_line .= " $proto" if $proto;
return $req_line;
}
lib/App/SpamcupNG/UserAgent.pm view on Meta::CPAN
$is_basic = 0 unless ( defined($is_basic) );
my $logger = get_logger('SpamcupNG');
my $request;
if ( $logger->is_debug ) {
$logger->debug( "Initial cookies:\n" . $self->_dump_cookies );
}
if ( $self->_is_authenticated ) {
$logger->debug('Already authenticated');
$request = HTTP::Request->new( GET => $self->{domain} );
}
else {
if ($password) {
if ($is_basic) {
$request = HTTP::Request->new( GET => $self->{members_url} );
$request->authorization_basic( $id, $password );
}
else {
$request = POST $self->{form_login_url},
[
username => $id,
$self->{password_field} => $password,
duration => '+12h',
action => 'cookielogin',
returnurl => '/'
];
}
}
else {
$request =
HTTP::Request->new( GET => $self->{code_login_url} . $id );
}
}
$request->protocol('HTTP/1.1');
if ( $logger->is_debug() ) {
$logger->debug(
"Request details:\n" . ( $self->_redact_auth_req($request) ) );
}
lib/App/SpamcupNG/UserAgent.pm view on Meta::CPAN
Expects as parameter a report ID.
Returns the HTML content as a scalar reference.
=cut
sub spam_report {
my ( $self, $report_id ) = @_;
my $logger = get_logger('SpamcupNG');
my $request = HTTP::Request->new( GET => $self->{report_url} . $report_id );
if ( $logger->is_debug ) {
$logger->debug( "Request to be sent:\n" . $request->as_string );
}
my $response = $self->{user_agent}->request($request);
$self->{current_base_url} = $response->base;
if ( $logger->is_debug ) {
$logger->debug( "Got HTTP response:\n" . $response->as_string );
t/00-report-prereqs.dd view on Meta::CPAN
'runtime' => {
'requires' => {
'Class::Accessor' => '0.51',
'DBD::SQLite' => '1.74',
'DBI' => '1.643',
'DateTime' => '1.59',
'HTML::Form' => '6.11',
'HTML::TreeBuilder::XPath' => '0.14',
'HTTP::CookieJar::LWP' => '0.014',
'HTTP::Cookies' => '6.01',
'HTTP::Request' => '6.44',
'HTTP::Request::Common' => '6.44',
'LWP::Protocol::https' => '6.14',
'LWP::UserAgent' => '6.72',
'Log::Log4perl' => '1.57',
'Mozilla::PublicSuffix' => 'v1.0.6',
'Set::Tiny' => '0.04',
'YAML::XS' => '0.88',
'perl' => '5.014004'
}
},
'test' => {
t/user-agent.t view on Meta::CPAN
use warnings;
use strict;
use Test::More;
use Test::Exception;
use HTTP::Request;
use App::SpamcupNG::UserAgent;
my $instance
= new_ok( 'App::SpamcupNG::UserAgent' => ['0.1.0'], 'new instance' );
my @expected_attribs = (
'name', 'version', 'members_url', 'code_login_url',
'report_url', 'current_base_url', 'domain', 'password_field',
'domain', 'form_login_url'
);
t/user-agent.t view on Meta::CPAN
);
can_ok( $instance, @expected_methods );
is(
$instance->user_agent,
'SpamcupNG user agent/0.1.0',
'user_agent returns the proper string'
);
dies_ok { App::SpamcupNG::UserAgent->new } 'dies with missing parameter';
like( $@, qr/version\sis\srequired/, 'got the expected error message' );
my $req = HTTP::Request->new( GET => 'http://members.spamcop.net/' );
$req->authorization_basic( 'foobar', '12345678910' );
my $expected = 'GET http://members.spamcop.net/' . "\n"
. 'Authorization: Basic ************************';
is( $instance->_redact_auth_req($req), $expected, '_redact_auth_req works' );
done_testing;
# vim: filetype=perl
( run in 0.377 second using v1.01-cache-2.11-cpan-de7293f3b23 )