22-3 Atom Publishing Protocol
487ページ
use Digest::SHA1 qw(sha1 sha1_hex sha1_base64);
use MIME::Base64 qw(encode_base64);
my $password = "mypassword";
my $nonce = "d36e316282959a9ed4c89851497a717f";
my $timestamp = "2010-03-17T00:00:00Z";
my $text = $nonce . $timestamp . $password;
my $pwdigest = encode_base64(sha1_hex($text));
#!/usr/bin/perl
use strict;
use warnings;
use lib './lib';
use lib './extlib';
use CGI;
use XML::Atom::Entry;
use XML::Atom::Client;
my $uri = 'http://user-domain/mt/mt-atom.cgi/1.0';
my $api = XML::Atom::Client->new;
$api->username('foo');
$api->password('bar');
my $cgi = new CGI;
print $cgi->header(-charset=>'UTF-8'),
$cgi->start_html(-lang=>'ja', -encoding=>'UTF-8', -title=>'test');
# この部分に次項以降のサンプルを挿入
print $cgi->end_html;
488ページ
記事の投稿
$uri .= '/blog_id=2';
my $entry = XML::Atom::Entry->new;
$entry->title('This is title');
$entry->content('This is content.');
$entry->summary('This is summary.');
$entry->issued('2010-03-17T00:00:00Z');
my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/');
$entry->set($dc, 'dc:subject', 'cat-1');
my $result = $api->createEntry($uri, $entry) or die $api->errstr;
print $result;
記事の取得
$uri .= '/blog_id=2/entry_id=1';
my $result = $api->getFeed($uri) or die $api->errstr;
print $result->as_xml;
489ページ
記事の更新
$uri .= '/blog_id=2/entry_id=1';
my $entry = XML::Atom::Entry->new;
$entry->title('This is title');
$entry->content('This is content.');
my $result = $api->updateEntry($uri, $entry) or die $api->errstr;
print $result;
記事の削除
$uri = '/blog_id=2/entry_id=1';
my $result = $api->deleteEntry($uri) or die $api->errstr;
print $result;
ブログ一覧の取得
my $result = $api->getFeed($uri) or die $api->errstr;
print $result->as_xml;
490ページ
ブログの記事一覧の取得
$uri .= '/blog_id=2';
my $result = $api->getFeed($uri) or die $api->errstr;
print $result->as_xml;
カテゴリの取得
$uri .= '/blog_id=2/svc=categories';
my $result = $api->getFeed($uri) or die $api->errstr;
print $result->as_xml;
コメントの取得
$uri = 'http://user-domainmt/mt/mt-atom.cgi/comments/blog_id=2';
my $result = $api->getFeed($uri) or die $api->errstr;
print $result->as_xml;
491ページ
ファイルアップロード
#!/usr/bin/perl
use strict;
use warnings;
use lib './lib';
use lib './extlib';
use FileHandle;
use XML::Atom::Entry;
use XML::Atom::Client;
my $uri = 'http://user-domainmt/mt/mt-atom.cgi/1.0';
my $api = XML::Atom::Client->new;
$api->username('foo');
$api->password('bar');
$uri .= '/blog_id=2/svc=upload';
my $file = shift;
local $/;
my $fh = FileHandle->new($file) or die "cannnot open $file: $!";
my $image = $fh->getline;
my $entry = XML::Atom::Entry->new;
$entry->content($image);
$entry->content->type('image/jpeg');
$entry->title('File Title');
my $result = $api->createEntry($uri, $entry) or die $api->errstr;
print $result;