HatenaのexistAPIをつかったモジュール

を、簡単につくってみました。

思いついてさくっとつくったので、簡単な動作確認しかしてません。
それに、existAPIからとってきたXMLXML::Simpleでパースした結果を返すだけ。
これじゃーつかえねぇ〜な〜w

一応連続して別URLをチェックできるようには作りました。
あとLWP::UserAgentのインスタンスもつかいまわせるようにしてます。
時間があればもっと洗練させてCPANアップといきたいところです。

以下ソース。参考までに。
WebService::Hatena::Exist


package WebService::Hatena::Exist;
use strict;
use warnings;
use base qw( Class::ErrorHandler );
use LWP::UserAgent;
use XML::Simple;
use Readonly;
Readonly our $HATENA_URL => qhttp://d.hatena.ne.jp/exist?mode=xml&url=;
our $VERSION = '0.01';
our $TARGET_URL;
sub new {
my($class,$self)=(shift,{@_});
$self->{'ua'} ||= LWP::UserAgent->new;
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 get_feed {
my $self = shift;
my $get_url = $HATENA_URL.$self->target_url;
my $req = HTTP::Request->new('GET',$get_url);
if ( $self->{'ua'}->request($req)->is_success ) {
$self->{'get_data'} = $self->{'ua'}->request($req)->content;
return 1;
}
else {
$self->error( $self->{'ua'}->request($req)->status_line );
return undef;
}
}
sub parse_feed {
my $self = shift;
return XMLin($self->{'get_data'});
}

で、サンプルスクリプト


#! /usr/bin/perl
use strict;
use warnings;
use lib qw(./lib);
use WebService::Hatena::Exist;
use Data::Dumper;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $whe = WebService::Hatena::Exist->new(
url => 'http://www.yahoo.co.jp',
ua => $ua,
);
$whe->get_feed;
print $whe->target_url , "\n";
print Dumper($whe->parse_feed);
$whe->target_url('http://www.google.co.jp');
$whe->get_feed;
print $whe->target_url , "\n";
print Dumper($whe->parse_feed);

いかがでせうか?