package Twitter::Daily::Blog::Base;
use strict;
use warnings;
our $VERSION = "0.1.0";
=pod
=head1 NAME
Twitter::Daily::Blog::Base - Interface to be used for publishing an entry on any blog
=head1 SYNOPSIS
use Error (:try);
## The next module implements the subs descibed at Twitter::Daily::Blog::Base
use My::Blog::Publisher;
try {
my $blog = My::Blog::Publisher->new( param1 => 'firstParaneterContent', ... );
$blog->login();
## $filename contains the file path to the story to be published
$blog->publish( $filename );
$blog->quit;
}
catch Twitter::Daily::Blog::NoConstructorError with {
my $E = shift;
print STDERR "Error in constructor : ", $E->{'\-text'}, "\n";
}
catch Twitter::Daily::Blog::NoLoginError with {
my $E = shift;
print STDERR "Error in login : ", $E->{'\-text'}, "\n";
}
catch Twitter::Daily::Blog::NoPublishError with {
my $E = shift;
print STDERR "Error in publishing : ", $E->{'\-text'}, "\n";
}
catch Twitter::Daily::Blog::NoQuitError with {
my $E = shift;
print STDERR "Error in quitting : ", $E->{'\-text'}, "\n";
}
=head1 DESCRIPTION
Interface to be used for publishing an entry on any blog
=head1 INTERFACE
All methods throw an error on failure, and in such case the error thrown will
be contained as text in -text and a unique numeric value in -value.
The arguments to be used for each method implementation are up to each implementation,
meaning that unless otherwise is explicited the method will accept all sort of arguments.
=head2 new
Creates a new object.
=cut
sub new {
my $class = shift;
my %option = @_;
my $self;
foreach my $key ( keys %option ) {
$self->{$key} = $option{$key};
};
return bless $self, $class;
};
=pod
=head2 login
Logins to the server. No arguments are accepted.
=cut
sub login { };
=pod
=head2 publish
Publishes the given story
=head3 options
=over 1
=item * filename
mandatory option that specifies the local filename to be published
in the blog.
=back
=cut
sub publish {
my $filename = shift;
}
=head2 quit
Ends the publishing process. The method accepts no parameters.
=cut
sub quit { };
1;