先日から紹介している WebService::Simple というモジュールを CPAN に登録するため、CPAN Author になりました。少し前からもそれになるべく PAUSE の申請をしていて、理由に「Acme::PornStars::JP」とだけ書いていたら、中の人にガン無視されてしまっていたので、まさに念願の CPAN Author です。オレオレモジュールとは違い、 MANIFEST や Makefile.PL をちゃんと書かなくてはいけないのに戸惑いました。いまだ、空気読めずに間違っているところもあるかと思いますが、というかすでに Makefile.PL とかに必要なモジュール(test で使っている Test::Perl::Critic )を書き忘れていて、test がこけるよーというレポートもらって修正したのをうpしているところです。
WebService::Simple の中身の件ですが、mattn さんに使っていただいて動的にURLのパスを変えたいというリクエストがあったので、それに対応させました。ご要望サンクスです。 リクエストを発行する get メソッドの第 2 引数にオプションとしてハッシュリファレンスを指定します。 それを踏まえて mattn さんが作った Lingr のチャットに発言するサンプルスクリプトはこのように書けます。
use strict;
use warnings;
use WebService::Simple;
my $api_key = "your_api_key";
my $room_id = "hO4SmQWTdJ4"; # http://www.lingr.com/room/hO4SmQWTdJ4
my $nickname = "lingr.pl";
my $message = $ARGV[0] || "Hello, World.";
my $lingr = WebService::Simple->new(
base_url => 'http://www.lingr.com/',
param => { api_key => $api_key, format => 'xml' }
);
# create session, get session
my $response;
$response = $lingr->get( {}, { path => '/api/session/create' } );
my $session = $response->parse_xml->{session};
# enter the room, get ticket
$response = $lingr->get(
{
session => $session,
id => $room_id,
nickname => $nickname,
},
{ path => '/api/room/enter' }
);
my $ticket = $response->parse_xml->{ticket};
# say 'Hello, World'
$response = $lingr->get(
{
session => $session,
ticket => $ticket,
message => $message,
},
{ path => '/api/room/say' }
);
my $status = $response->parse_xml->{status};
# destroy session
$lingr->get( { session => $session, }, { path => '/api/session/destroy' } );
自分が作ったものを使ってもらえること、また、CPAN のサイトに自分の名前が載るっていうのはとっても嬉しいことですね。至らぬ点あると思いますが、よろしくお願いします。 他のモジュールもうpろう。