PlaceEngineをrubyから使う?

周囲の無線LANのアクセスポイントの信号から現在位置を割り出すPlaceEngineMacにインストールしてみました。
上記サイトからダウンロードできるアプリには、内部に簡易Webサーバが搭載されていて、HTTPプロトコルでアクセスすると電波を測定して結果を返してくれます(JSONP形式)。その計測結果をPlaceEngineAPIに送れば、現在位置がわかるという仕掛け。またローカルDBを持っていて、アプリ単体でも現在位置を割り出せるようです。
せっかくAPIが公開されているので、rubyで実装してみました。結果がJSライクなので、置換してevalして楽を。HTTPもcurlを使ってるのでお手軽簡単(てかちょっと卑怯...)。ただこれだといろんな言語でcurl用のAppKeyを使い回せるので実験用にはよいです。楽しない場合はこういった感じになるのでしょうか。
アプリを立ち上げて以下のrubyスクリプト実行すると、こんな感じで現在地点の経度/緯度や住所などが出ます。

num:  8                  #検出したアクセスポイント数
x: 139.532042            #経度[°]
y: 35.589786             #緯度[°]
range: 5              #誤差[m]
addr: 神奈川県******      #住所
floor: **                #階数などの情報
msg: 位置が取得できました

これがiPod touchに載ったら楽しいだろうな。

↓ちなみにMac OS Xとかcygwinrubyなど、curlの入ってる環境でしか動きません。

#!/usr/bin/ruby

$appk_curl = '****'  # PlaceEngineのWebページで取得したcurl用のアプリキー
$ts = Time.now.to_i

def recvLoc(x,y,range,info)
    if range > 0 then
        puts "x: #{x}"
    	puts "y: #{y}"
	puts "range: #{range}"
	puts "addr: #{info["addr"]}"
	puts "floor: #{info["floor"]}"
	puts "msg: #{info["msg"]}"
    else
	puts "error: #{range}"
    end
    exit
end

def recvRTAG(rtag,numap,t)
    puts "num:  #{numap}"

    return false if numap <= 0
    ret = `curl -s 'http://www.placeengine.com/api/loc?rtag=#{rtag}&t=#{$ts}&appk=#{$appk_curl}'`
    if $? != 0 then
	puts "error: #{$?}"
	exit
    end
    ret.gsub!(/':/, "'=>")
    eval ret
    puts "error: #{ret}"
end

ret = `curl -s 'http://localhost:5448/rtagjs?t=#{$ts}&appk=#{$appk_curl}'`
if $? != 0 then
	puts "error: #{$?}"
	exit
end
eval ret
puts "error: #{ret}"