searchmash.comのAPIをたたいてみる

今さながらGoogle の次世代検索機能の実験サイトSearchMashAPIをたたいてみるコードを書いてみる。

ホントはJavaScriptだけで完結したかったんだけど、どうもクロスドメイン制限があるんでProxyなPHPもセットで作ります。

ちなみにDojoを使えばクロスドメインのサービスコールを解決できるのだが、どうもsearchmashはうまくコールできなかった。。。

searchmash-proxy.php
<?php
$url = 'http://www.searchmash.com/results/%query%';
$qt = $_GET['qt'];
$url = str_replace("%query%", $qt, $url);
$session = curl_init($url);

curl_setopt($session, CURLOPT_HEADER, false); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

$results = curl_exec($session);
header("Content-Type: application/json");
echo $results;
curl_close($session);
?>
searchmash.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
  <head>
    <title>My Blog Search Widget</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <script type="text/javascript"
      src="http://prototypejs.org/assets/2008/1/25/prototype-1.6.0.2.js"></script>
    <script type="text/javascript">
function BlogSearch() {
  var request = new Ajax.Request(
    "/searchmash-proxy.php",
    {
      method: 'get',
      parameters: {
        qt : $F('q'),
      },
      asynchronous: false,
      onLoading: function(transport) {
        var html = '<b><blink>Searching...Please wait</blink></b>';
        document.getElementById('results').innerHTML = html;
      },
      onSuccess: function(transport) {
        var json = transport.responseJSON;
        var estimatedCount = json.estimatedCount;
        var term = json.query.terms;
        var results = json.results;
        var html = '<b>Total hits: ' +
            json.estimatedCount +
            ' for term: </b>' +
            json.query.terms + 
            '<br/><br/>';
        results.each(function(result) {
          html += '<b><a href="' + 
            result.url + 
            '">' +
            result.title +
            '</b></a><br/>' +
            result.snippet +
            '<br/><b>' +
            result.displayUrl +
            ' ' +
            '<a href="' +
            result.cachedUrl +
            '">Cached</a></b><br/><br/>';
        });
        document.getElementById('results').innerHTML = html;
      }
    }
  );
}
    </script>
  </head>
  <body>
    <p>
    <b>Enter your query:</b>
    <input type="text" id="q" name="q"/>
    <input type="button" name="Search" value="Search!"
      onclick="BlogSearch()"/>
    </p>
    <hr/>
    <b>Results</b><br/>
    <div id="results"></div>
  </body>
</html>

あ、なんか日本語入力が投げられねぇ〜(;´Д`) 
PHP側のcurlで投げる時にどうもエンコードかけないといけない?
ううむ、ひとまず考えてみる。。。