Net-Mollom

 view release on metacpan or  search on metacpan

lib/Net/Mollom.pm  view on Meta::CPAN

use Exception::Class (
    'Net::Mollom::Exception',
    'Net::Mollom::ServerListException'    => {isa => 'Net::Mollom::Exception'},
    'Net::Mollom::CommunicationException' => {isa => 'Net::Mollom::Exception'},
    'Net::Mollom::APIException' =>
      {isa => 'Net::Mollom::Exception', fields => [qw(mollom_code mollom_desc)]},
);

has current_server => (is => 'rw', isa => 'Num',  default  => 0);
has public_key     => (is => 'rw', isa => 'Str',  required => 1);
has private_key    => (is => 'rw', isa => 'Str',  required => 1);
has session_id     => (is => 'rw', isa => 'Str');
has xml_rpc        => (is => 'rw', isa => 'XML::RPC');
has warnings       => (is => 'rw', isa => 'Bool', default  => 1);
has attempt_limit  => (is => 'rw', isa => 'Num',  default  => 1);
has attempts       => (is => 'rw', isa => 'Num',  default  => 0);
has servers_init   => (is => 'rw', isa => 'Bool', default  => 0);
has servers        => (
    is      => 'rw',
    isa     => 'ArrayRef',
    default => sub {

lib/Net/Mollom.pm  view on Meta::CPAN

Net::Mollom - interface with Mollom web API

=head1 SYNOPSIS

Communicate with the Mollom web API (L<http://mollom.com/>) via
XML-RPC to determine whether user input is Spam, Ham, flame or
obscene.

    my $mollom = Net::Mollom->new(
        public_key  => 'a2476604ffba00c907478c8f40b83b03',
        private_key => '42d5448f124966e27db079c8fa92de0f',
    );

    my @server_list = $mollom->server_list();

    my $check = $mollom->check_content(
        post_title => $title,
        post_body  => $text,
    );
    if ($check->is_spam) {
        warn "someone's trying to sell us v1@grA!";

lib/Net/Mollom.pm  view on Meta::CPAN


This creates a new NET::Mollom object for communication. It takes the following
named arguments:

=over

=item * public_key (required)

This is your Mollom API public key.

=item * private_key (required)

This is your Mollom API private key.

=item * attempt_limit

This is the number of times Net::Mollom will try to refresh the server list
before giving up. Defaults to 1.

=item * warnings

lib/Net/Mollom.pm  view on Meta::CPAN

        }
    );

    # get the server list from Mollom if we don't already have one
    $self->server_list() unless $self->servers_init;
    return $self->_make_api_call('getStatistics', \%args);
}

sub _make_api_call {
    my ($self, $function, $args) = @_;
    my $secret = $self->private_key;
    my @servers = @{$self->servers};

    # keep track of how many times we've descended down into this rabbit hole
    if( !  $self->{_recurse_level} ) {
        $self->{_recurse_level} = 1;
    } else {
        $self->{_recurse_level}++;
    }

    if (!$self->xml_rpc) {

t/01-constructor.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 6);
BEGIN { use_ok( 'Net::Mollom' ); }

eval { Net::Mollom->new() };
ok($@);
like($@, qr/\(private_key\) is required/, 'private_key is required');
eval { Net::Mollom->new( private_key => 123 ) };
like($@, qr/\(public_key\) is required/, 'public_key is required');
my $mollom;
eval { $mollom = Net::Mollom->new( private_key => 123, public_key => 456 ) };
ok(!$@);
isa_ok($mollom, 'Net::Mollom');

t/02-server_list.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 2);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

SKIP: {
    my @servers;
    eval { @servers = $mollom->server_list };
    skip("Can't reach Mollom servers", 1) if catch(['Net::Mollom::CommunicationException']);
    cmp_ok($#servers, '>=', 1, 'got at least 1 server back');

t/03-verify_key.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 11);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# bad public and private keys
my $mollom = Net::Mollom->new(
    private_key => '123',
    public_key => '456',
);
isa_ok($mollom, 'Net::Mollom');

SKIP: {
    my $result;
    eval { $result = $mollom->verify_key };
    ok(my $e = catch);
    ok($e);

    if( $e->isa('Net::Mollom::CommunicationException') ) {
        skip("Can't reach Mollom servers", 6);
    } else {
        like($e->mollom_desc, qr/could not find your public key/);
        is($e->mollom_code, 1000, 'correct error code from Mollom');

        # bad private key
        $mollom = Net::Mollom->new(
            private_key => '123',
            public_key  => '72446602ffba00c907478c8f45b83b03',
        );
        isa_ok($mollom, 'Net::Mollom');
        eval { $result = $mollom->verify_key };
        ok($e = catch);
        like($e->mollom_desc, qr/hash is incorrect/);
        is($e->mollom_code, 1000, 'correct error code from Mollom');

        # good public and private keys
        $mollom = Net::Mollom->new(
            private_key => '42d54a81124966327d40c928fa92de0f',
            public_key  => '72446602ffba00c907478c8f45b83b03',
        );
        isa_ok($mollom, 'Net::Mollom');
        $result = $mollom->verify_key();
        is($result, 1, 'key is verified');
    }
}

t/04-check_content.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 17);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');

$mollom->servers(['dev.mollom.com']);

# check parameter validation
my $check;
eval { $check = $mollom->check_content(foo => 1) };
ok($@);

t/05-send_feedback.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 9);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

my $check;
SKIP: {
    eval { 
        $check = $mollom->check_content(
            post_title => 'Foo Bar',

t/06-get_image_captcha.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 8);
use Net::Mollom;

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

# check parameter validation
eval { $mollom->get_image_captcha(foo => 1) };
ok($@);
like($@, qr/was not listed/);

t/07-get_audio_captcha.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 8);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

# check parameter validation
eval { $mollom->get_audio_captcha(foo => 1) };
ok($@);
like($@, qr/was not listed/);

t/08-get_statistics.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 7);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

# test parameter validation
eval { $mollom->get_statistics };
ok($@);
like($@, qr/'type' missing/);
eval { $mollom->get_statistics(type => 'today_days') };

t/09-check_captcha.t  view on Meta::CPAN

#!perl -T
use strict;
use warnings;
use Test::More (tests => 6);
use Net::Mollom;
use Exception::Class::TryCatch qw(catch);

# ham content
my $mollom = Net::Mollom->new(
    private_key => '42d54a81124966327d40c928fa92de0f',
    public_key => '72446602ffba00c907478c8f45b83b03',
);
isa_ok($mollom, 'Net::Mollom');
$mollom->servers(['dev.mollom.com']);

# check parameter validation
eval { $mollom->check_captcha() };
ok($@);
like($@, qr/missing/, 'needs a solution');



( run in 0.293 second using v1.01-cache-2.11-cpan-a5abf4f5562 )