HTTP-API::SELECT このエントリーをはてなブックマークに追加

select - メッセージトークンまたはIDでデータを取得

API(select)は、bounceHammer 2.4.0から実装されたメッセージトークンの値またはデータベース上のIDをキーにして該当するデータを取得するものです。この機能の用途は、例えばモバイルサイトにおいて、各ユーザの登録済みメールアドレスの状態をbounceHammerサーバに照会し、その結果を各ユーザのログインしたページで表示する、といったアクセスがさほど集中しない問合せに向いています。

大量アクセスがある場合は

一方、大量にメールを配信する際に個々のアドレスをbounceHammerに照会する、あるいは、一日一回サイトのデータベースにあるメールアドレスとbounceHammerにあるそれらを照会する、という大量のアクセスが発生する用途では、datadumperコマンドで先に照合用データを取得しておいたほうが合理的かもしれません。

selectの使い方

メッセージトークンまたはIDでデータを取得するAPIのURLは、http://bounceHammerのホスト/APIのCGIファイル名/select/メッセージトークンまたはIDという形式です。

PerlとPythonでの簡単な実装例

Perl

メッセージトークンによるAPI問合せのPerlでの簡易な実装例です。エラーや例外処理は入れていません。サイトの各所でデータ形式はYAMLであると記述していますが、APIはJSON形式でデータを出力するのでJSONパーサ(JSON::Syck)を使用しています。

#!/usr/local/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON::Syck;
use Digest::MD5;

my $addresser = q{sender01@example.jp};
my $recipient = q{user01@example.org};
my $queryhost = q{http://apitest.bouncehammer.jp/index.cgi/query/};
my $mesgtoken = Digest::MD5::md5_hex(sprintf("\x02%s\x1e%s\x03",$addresser,$recipient));
my $useragent = new LWP::UserAgent();
my $response = $useragent->request( HTTP::Request->new( GET => $queryhost.$mesgtoken ));
my $metadata = JSON::Syck::Load($response->content()) || [];

foreach my $j ( @$metadata )
{
  printf( "%s: %s\n", $j->{recipient}, $j->{reason} );
}

Python

メッセージトークンによるAPI問合せのPython 2.5での簡易な実装例です。上記のPerlでの例と同様エラーや例外処理は入れていません。サイトの各所でデータ形式はYAMLであると記述していますが、APIはJSON形式でデータを出力するのでJSONパーサ(simplejson)を使用しています。

#!/usr/bin/python
# coding: utf-8
import urllib2
import simplejson
import md5

addresser = 'sender01@example.jp'
recipient = 'user01@example.org'
mesgtoken = md5.new('\x02%s\x1e%s\x03' % (addresser,recipient))
queryhost = 'http://apitest.bouncehammer.jp/index.cgi/query/'
response = urllib2.urlopen( queryhost + mesgtoken.hexdigest() )
metadata = simplejson.load(response)

for j in metadata:
  print j['recipient'] + ': ' + j['reason']

ここではPerlとPythonの簡単な実装例を紹介していますが、ソースコードのexamples/ディレクトリに PHPとRuby(1.9)用のサンプルスクリプト(examples/request-to-api.(pl|py|php|rb)を同梱しています。

No TrackBacks

TrackBack URL: http://bouncehammer.jp/cgi-bin/mt/mt-tb.cgi/40

Leave a comment







Pages