WebService::DMM 0.08をリリースしました

WebService-DMM-0.08 - DMM webservice module - metacpan.org

修正箇所

  • エラーレスポンスが返ってきたときの不備の修正
  • 生のレスポンスオブジェクトを返すメソッド(last_response)の追加


前者はエラーが返ってきたときにレスポンスオブジェクトの is_success
メソッドが trueを返してしまう等の問題があったので修正しました。
後者は @氏のこちらの記事で生の
レスポンスオブジェクトを取得できるべきとあったので、そうだなって
ことで修正しました。Clientインスタンスは差し替えできるように
作っていたんですが、不十分でした。


以下のように last_responseメソッドFurl::Responseインスタンス
取得できます。

my $dmm = WebService::DMM->new(
    affiliate_id => $config->{affiliate_id},
    api_id       => $config->{api_id},
);

my $res = $dmm->search(
    site    => 'DMM.co.jp',
    %params
);

# Furl::Responseインスタンスが取得できる
my $raw_response = $dmm->last_response, "\n";

おわりに

DMMのWeb APIに今更気づいたので... - ゆーすけべー日記 v1


と同じことは以下のようにして実現できます。EUC-JPによるエンコーディング
時間の指定やらはデフォルトである程度してくれます。取得できるパラメータに
ついてはアクセッサがあるので、APIドキュメントを見て、その名前のメソッド
呼びだせば値は概ね取得できると思います。詳しくはパッケージに
含まれるサンプルプログラムやドキュメントを参照してください。

#!/usr/bin/env perl
use strict;
use warnings;

use utf8;

use Config::Pit;
use WebService::DMM;

binmode STDOUT, ":utf8";

my $config = pit_get('dmm.co.jp', require => {
    affiliate_id => 'DMM Affiliate ID',
    api_id       => 'DMM API ID',
});

my $dmm = WebService::DMM->new(
    affiliate_id => $config->{affiliate_id},
    api_id       => $config->{api_id},
);

my $res = $dmm->search(
    site    => 'DMM.co.jp',
    sort    => 'review',
    service => 'digital',
    floor   => 'videoa',
    keyword => '成瀬心美',
    hits    => 20,
);

my $index = 1;
for my $item (@{$res->items}) {
    printf "[%2d] %s\n", $index, $item->title;
    $index++;
}
結果


問題があれば githubissueまでお願いします。