Captcha-AreYouAHuman
view release on metacpan or search on metacpan
lib/Captcha/AreYouAHuman.pm view on Meta::CPAN
return $self;
}
# Get the HTML that gets embedded
# Returns the string to be echoed out to the browser.
sub getPublisherHTML {
my $self = shift;
# Get the variables out
my $server = $self->{"server"};
my $publisher_key = $self->{"publisher_key"};
return "<div id='AYAH'></div><script type='text/javascript' src='https://" .
$server . "/ws/script/" . uri_escape($publisher_key) .
"'></script>";
}
# Score the results
# parameters are passed with key => value
# with parameters client_ip and session_secret
#
# If you are using CGI.pm, call as
# $cgi = new CGI();
# my $ayah = new Captcha::AreYouAHuman;
# my $result = $ayah->scoreResult(
# 'session_secret' => $cgi->param('session_secret'),
# 'client_ip' => $cgi->remote_host()
# );
#
# Returns 0/false if failed; true if passed.
#
sub scoreResult {
my $self = shift;
my %params = @_;
# get the variables out
my $server = $self->{"server"};
my $client_ip = "";
my $session_secret = "";
if ($params{"session_secret"} eq "") {
$self->errorLog("Called Captcha::AreYouAHuman::scoreResult without a session_secret");
return 0;
} else {
$session_secret = $params{"session_secret"};
}
if ($params{"client_ip"} eq "") {
$self->errorLog("Called Captcha::AreYouAHuman::scoreResult without a client_ip");
return 0;
} else {
$client_ip = $params{"client_ip"};
}
# Make the request
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(POST => 'https://' . $server .
'/ayahwebservices/index.php/ayahwebservice/scoreGame');
$req->content_type('application/x-www-form-urlencoded');
$req->content('session_secret=' . uri_escape($session_secret) . '&client_ip=' .
uri_escape($client_ip));
my $res = $ua->request($req);
if ($res->is_success) {
# JSON decode and evaluate result
my $results;
eval {
$results = decode_json($res->content);
};
if ($@) {
$self->errorLog("Could not JSON decode: " . $res->content);
return 0;
} else {
return ($results->{'status_code'} == 1);
}
} else {
$self->errorLog("Error: Internal error: " . $res->status_line);
return 0;
}
}
# Record the conversion
# parameters are passed with key => value
# with parameters session_secret
#
# If you are using CGI.pm, call as
# $cgi = new CGI();
# my $ayah = new Captcha::AreYouAHuman;
# my $result = $ayah->scoreResult(
# 'session_secret' => $cgi->param('session_secret')
# );
#
# Returns the HTML string to be inserted into the conversion page. (Hidden iframe)
#
sub recordConversion {
my $self = shift;
my %params = @_;
# get the variables out
my $server = $self->{"server"};
my $session_secret = "";
if ($params{"session_secret"} eq "") {
$self->errorLog("Called Captcha::AreYouAHuman::scoreResult without a session_secret");
return "";
} else {
$session_secret = $params{"session_secret"};
}
return '<iframe style="border: none;" height="0" width="0" src="https://' .
$server . '/ws/recordConversion/' . $session_secret . '"></iframe>';
}
# Error logging function; override if you don't want this making noise.
# Parameter: Error message
( run in 1.009 second using v1.01-cache-2.11-cpan-800906f7e73 )