App-SpamcupNG

 view release on metacpan or  search on metacpan

META.json  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" : {

META.yml  view on Meta::CPAN

    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,

cpanfile  view on Meta::CPAN

# 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 )