Timelogというサービスがあります。
http://timelog.jp/
Twitterと似たような日本サービス。Twitterがローカライズされていないので、こっちから入る人も多いと思います。
とりあえず登録。そしてAPIを試してみました。(APIコンテストがあったと気がついた瞬間、終わってもいた)
APIの利用方法として今回はPHPを使いました。APIがBASIC認証になっているので、PEARのHTTP_Requestを使いました。BASIC認証ありのfile_get_contents
ライクなfunctionは以下のように書けます。
require_once('HTTP/Request.php');
function file_get_contents_with_ba($url, $id, $pw)
{
$req = new HTTP_Request($url);
if (isset($id) && isset($pw)) {
$req->setBasicAuth($id, $pw);
}
$response = $req->sendRequest();
$contents = "";
if (PEAR::isError($response)) {
echo $response->getMessage();
} else {
$contents = $req->getResponseBody();
}
return $contents;
}
さて、新しいメモの登録ですが、postするときはurlencodeではなくrawurlencodeでエンコードしてくださいとあります。HTTP_Requestは内部でurlencodeしちゃうようなので、addPostDataの第三引数にtrueを渡します。これは「すでにencodeしちゃったぜ」フラグです。
コードは以下のようになります。UTF-8前提かつ、エラーハンドリングなしなのであしからず・・・
require_once('HTTP/Request.php');
function post_new_msg($id, $pw, $msg)
{
$url = 'http://api.timelog.jp/new.asp';
$req = new HTTP_Request($url);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
if (isset($id) && isset($pw)) {
$req->setBasicAuth($id, $pw);
}
$msg = rawurlencode($msg);
$req->addPostData('text', $msg, true);
$req->sendRequest();
$response = $req->getResponseBody();
return $req->GetResponseCode();
}