| WebService-Hatena-Bookmark-Lite documentation | Contained in the WebService-Hatena-Bookmark-Lite distribution. |
WebService::Hatena::Bookmark::Lite - A Perl Interface for Hatena::Bookmark AtomPub API
use WebService::Hatena::Bookmark::Lite;
my $bookmark = WebService::Hatena::Bookmark::Lite->new(
username => $username,
password => $password,
);
### add
my $edit_ep = $bookmark->add(
url => $url,
tag => \@tag_list,
comment => $comment,
);
### edit
@tag = ( qw/ kaka tete /);
$com = 'edit comment';
$bookmark->edit(
edit_ep => $edit_ep,
tag => \@tag ,
comment => $com ,
);
### delete
$bookmark->delete(
edit_ep => $edit_ep ,
);
# Get Feed
my $feed = $bookmark->getFeed();
print $feed->as_xml;
WebService::Hatena::Bookmark::Lite provides an interface to the Hatena::Bookmark AtomAPI.
If you use this module , It is necessary to prepare Hatena ID beforehand.
Hatena ID & password are necessary , when you install this module too. please set ID & password using Conig::Pit , it looks like this.
% perl -MConfig::Pit -e'Config::Pit::set("http://www.hatena.ne.jp", data=>{ username => "foobar", password => "barbaz" })'
my $bookmark = WebService::Hatena::Bookmark::Lite->new(
username => $username,
password => $password,
);
Creates and returns a WebService::Hatena::Bookmark::Lite Object.
my $edit_ep = $bookmark->add(
url => $url,
tag => \@tag_list,
comment => $comment,
);
Add Entry of your Hatena::Bookmark. Return EditURI End Point.
my $edit_ret = $bookmark->edit(
edit_ep => $edit_ep,
tag => \@tag_list,
comment => $comment,
);
Edit exist entry of your Hatena::Bookmark. Return true on success, false otherwise.
my $del_ret = $bookmark->delete(
edit_ep => $edit_ep ,
);
Delete exist entry of your Hatena::Bookmark.
my $edit_ep = $bookmark->entry2edit_ep( $entry );
Need one parameter. what is XML::Atom::Entry Object. Return EditURI End Point of correct entry. EditURI End Point is unique number of each entry.
my $entry = $bookmark->getEntry(
edit_ep => $edit_ep ,
);
Get exist entry of your Hatena::Bookmark. Return XML::Atom::Entry Object.
my $feed = $bookmark->getFeed(); print $feed->as_xml;
Get entries of your Hatena::Bookmark. Return XML::Atom::Feed Object.
http://github.com/masartz/p5-webservice-hatena-bookmark-lite/tree/master
Masartz <masartz {at} gmail.com>
http://b.hatena.ne.jp/
http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AFAtomAPI
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| WebService-Hatena-Bookmark-Lite documentation | Contained in the WebService-Hatena-Bookmark-Lite distribution. |
package WebService::Hatena::Bookmark::Lite; use strict; use warnings; our $VERSION = '0.03'; use Carp qw/croak/; use XML::Atom::Link; use XML::Atom::Entry; use XML::Atom::Client; use base qw/ Class::Accessor::Fast /; __PACKAGE__->mk_accessors qw/ client /; my $HatenaURI = q{http://b.hatena.ne.jp/}; my $PostURI = $HatenaURI.q{atom/post}; my $FeedURI = $HatenaURI.q{atom/feed}; sub new{ my( $class , %arg ) = @_; my $client = XML::Atom::Client->new; $client->username($arg{username}); $client->password($arg{password}); bless { client => $client },$class; } sub add{ my( $self , %arg ) = @_; my $url = $arg{url}; my $tag = $arg{tag}; my $comment = $arg{comment}; my $entry = XML::Atom::Entry->new; $entry->add_link( $self->_make_link_element($url) ); $entry->summary( $self->_make_summary($tag,$comment) ); return $self->client->createEntry($PostURI , $entry) or croak $self->client->errstr; } sub getEntry{ my( $self , %arg ) = @_; my $EditURI = $self->_set_edit_uri( $arg{edit_ep} ); return $self->client->getEntry( $EditURI ) or croak $self->client->errstr; } sub edit{ my( $self , %arg ) = @_; my $tag = $arg{tag}; my $comment = $arg{comment}; my $EditURI = $self->_set_edit_uri( $arg{edit_ep} ); my $entry = XML::Atom::Entry->new; $entry->summary( $self->_make_summary($tag,$comment) ); return $self->client->updateEntry($EditURI , $entry) or croak $self->client->errstr; } sub delete{ my( $self , %arg ) = @_; my $EditURI = $self->_set_edit_uri( $arg{edit_ep} ); return $self->client->deleteEntry($EditURI ) or croak $self->client->errstr; } sub getFeed{ my $self = shift; return $self->client->getFeed( $FeedURI ) or croak $self->client->errstr; } sub entry2edit_ep{ my( $self , $entry ) = @_; return if ! $entry; my $edit = ''; for my $link ( $entry->link() ){ if( $link->rel() eq 'service.edit'){ $edit = $link->href(); last; } else{ next; } } my $edit_ep = substr($edit , length("$HatenaURI") ); return $edit_ep; } sub _set_edit_uri{ my( $self , $edit_ep ) = @_; return if ! $edit_ep; return sprintf("%s%s", $HatenaURI , $edit_ep); } sub _make_link_element{ my( $self , $url ) = @_; my $link = XML::Atom::Link->new; $link->rel('related'); $link->type('text/html'); $link->href($url); return $link; } sub _make_tag{ my( $self , $tag_list ) = @_; my $tag_str = ''; for my $tag ( @{$tag_list} ){ $tag_str .= sprintf("[%s]" , $tag); } return $tag_str; } sub _make_summary{ my ( $self , $tag , $comment ) = @_; my $summary = $self->_make_tag($tag); $summary .= $comment || ''; return $summary; } 1; __END__