WebService::Hatena::Existの改良

WebService::Hatena::Existを改良しました。

改良点としては以下
1.URI::Fetch::SimpleCacheを使うようにして、はてなサーバにやさしくしました。
2.bookmark、antenna、diaryのメソッド内でフィールド情報を取り出すようにしました。
3.インタフェースの変更点としてはURI::Fetch::SimpleCacheに渡すキャッシュオブジェクト作成情報を渡せるようにしました。

ソースは以下


package WebService::Hatena::Exist;
use strict;
use warnings;
use base qw( Class::ErrorHandler );
use URI::Fetch::SimpleCache;
use XML::Simple;
use Readonly;
Readonly our $HATENA_URL => qhttp://d.hatena.ne.jp/exist?mode=xml&url=;
our $VERSION = '0.02';
our $TARGET_URL;
sub new {
my($class,$self)=(shift,{@_});
bless($self,$class);
$self->target_url( $self->{'url'} ) if $self->{'url'};
$self;
}
sub target_url {
my $self = shift;
if(@_) { $TARGET_URL = shift }
return $TARGET_URL;
}
sub bookmark {
shift->{'parse_ref'}->{'count'}->{'bookmark'}->{'content'};
}
sub antenna {
shift->{'parse_ref'}->{'count'}->{'antenna'}->{'content'};
}
sub diary {
shift->{'parse_ref'}->{'count'}->{'diary'}->{'content'};
}
sub parse_ref {
shift->{'parse_ref'};
}
sub feed {
shift->{'feed'};
}
sub get_feed {
my $self = shift;
my $get_url = $HATENA_URL.$self->target_url;
my $res = URI::Fetch::SimpleCache->fetch(
$get_url,
Cache_root => $self->{'Cache_root'},
Cache_default_expires => $self->{'Cache_default_expires'},
UserAgent => $self->{'ua'},
) or return $self->error( URI::Fetch::SimpleCache->errstr );
$self->{'feed'} = $res->content;
$self->{'parse_ref'} = $self->parse_feed;
$self->{'feed'};
}
sub parse_feed {
XMLin(shift->{'feed'});
}
1;

ご意見頂戴したいと思います。

実行サンプルソースは以下


#! /usr/bin/perl -w
use strict;
use lib qw(./lib);
use WebService::Hatena::Exist;
use Data::Dumper;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $h = WebService::Hatena::Exist->new(
url => 'http://www.hatena.ne.jp/',
Cache_root => './.cache',
Cache_default_expires => '60 sec',
ua => $ua,
);
if ( ! $h->get_feed ) {
print $h->errstr;
exit;
}
print $h->target_url , "<br>\n";
print "feed<br>\n";
print $h->feed,"<br>\n";
print "bookmark<br>\n";
print $h->bookmark,"<br>\n";
print "antenna<br>\n";
print $h->antenna,"<br>\n";
print "diary<br>\n";
print $h->diary,"<br>\n";
print Dumper($h->parse_ref);
$h->target_url('http://www.google.com/');
$h->get_feed;
print $h->target_url , "<br>\n";
print "feed<br>\n";
print $h->feed,"<br>\n";
print "bookmark<br>\n";
print $h->bookmark,"<br>\n";
print "antenna<br>\n";
print $h->antenna,"<br>\n";
print "diary<br>\n";
print $h->diary,"<br>\n";
print Dumper($h->parse_ref);

特に何もなければこれでCPANにアップしたいと思います。