Acme-AsciiArtFarts
view release on metacpan or search on metacpan
lib/Acme/AsciiArtFarts.pm view on Meta::CPAN
package Acme::AsciiArtFarts;
use warnings;
use strict;
use LWP;
=head1 NAME
Acme::AsciiArtFarts - Simple Object Interface to AsciiArtFarts
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.03';
=head1 SYNOPSIS
This package provides a simple object orientated interface to AsciiArtFarts - a
website focussed on Ascii Art humour.
use Acme::AsciiArtFarts;
my $aaf = Acme::AsciiArtFarts->new();
my $current = $aaf->current();
print $current;
=head1 METHODS
=head2 new
Constructor - creates a new Acme:AsciiArtFarts object. This method takes no arguments.
=cut
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
$self->{ua} = LWP::UserAgent->new();
$self->{uri} = 'http://www.asciiartfarts.com';
$self->{req} = HTTP::Request->new(GET => $self->{uri});
$self->__get_keywords;
$self->{cur_key}= '';
$self->{cur_num}= 0;
$self->{key_arr}= ();
return $self
}
=head2 current
print $aaf->current();
Returns the current strip.
=cut
sub current {
return $_[0]->__request('/today.txt')
}
=head2 random
print $aaf->random();
Returns a random strip.
=cut
sub random {
return __parse($_[0]->__request('/random.cgi'));
}
=head2 list_keywords
print join " ", $aaf->list_keywords();
Returns a list of all keywords by which strips are sorted.
=cut
sub list_keywords {
return sort keys %{$_[0]->{keywords}}
}
=head2 list_by_keyword
my @art = $aaf->list_by_keyword('matrix');
Returns a list of strip numbers for the given keyword.
=cut
sub list_by_keyword {
my ($self,$keyword)= @_;
exists $self->{keywords}->{$keyword} or return 0;
return @{$self->{keywords}{$keyword}{strips}};
}
=head2 get_by_num
print $aaf->get_by_num($art[0]);
( run in 0.938 second using v1.01-cache-2.11-cpan-007c89162af )