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');