物欲購入目録日誌 写真館
スポンサーサイト
--.--.-- (--:--) スポンサー広告
Twitterでつぶやく
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Rubyと XUrrency API を使って為替変換を実行する
2011.09.29 (00:28) プログラミングtrackback(0)comment(0)
Twitterでつぶやく
xu.png


rubyと公開されているAPIを利用して為替変換する方法を

Exchange Rate API

http://tachiphoto.blog61.fc2.com/blog-entry-1359.html


を例に出してブログに書いたんですが、無料のAPI利用制限が結構厳しいかったのですぐにライセンスキーを購入してアップデートしたのですが、、さらに低コストできるAPIとサンプルコードを作りました。

ご紹介するのは XUrrency API http://xurrency.com/api

ここ為替レートの変換をしようとするとすぐに見つかる有名サイトで,このサイト用のruby gemのライブラリも用意されているので楽勝じゃん!

ruby-xurrency

と思ったのですが、、このライブラリはメンテナンスされてなくて、今は利用できなくなっているので、素直に書いてみました。

サンプルコードは以下の様なかんじ

--
#! /usr/bin/ruby
#
# [ exchange_rage ]
#
# 概要: XUrrency API (http://xurrency.com/api)
# を用いて為替レート変換を実行する。
# (注意) 利用制限は1日に10回である。
#
# XUrrencyの返却値はJSON形式なので,JSONパーサには
# "JSON implementation for Ruby"(gem)を利用するぉ
#
$KCODE="u"
require "rubygems"
require 'net/http'
require "json"

#
# exchange_rate
#
# 引数:変換前の額,変換元為替,変換後為替
# 返値:変換後の額
#
def exchange_rate(amount,base,target)
# API情報
host = "xurrency.com"
http = Net::HTTP.new(host,80)

# 問い合わせURLを作成
url = "/api/" + base.to_s + "/" + target.to_s + "/" + amount.to_s

# 例外処理
# - リトライ回数とカウンタ
num_retry = 3
count = 0
begin
response = http.get(url)
# 結果をJSONパーサへ
res = JSON.parse(response.body)

# 各種情報を取得(利用しないけどな)
status = res['status']
code = res['code']
update_at = res['result']['update_at']
value = res['result']['value']

# status codeが不正であればnilを返却
return nil if res['code'] != 0 && status != 'ok'

# 変換値を返却
return value
rescue
# リトライ回数をインクリメント
count += 1
if count <= num_retry
retry
else
# リトライ上限に達したらnilを返却
return nil
end
end
end # exchange rage


# main 関数
if __FILE__ == $0
#メインプログラム
# USドル -> 円
puts exchange_rate(1,'usd','jpy')
# オーストラリアドル -> 円
puts exchange_rate(1,'aud','jpy')
# ブラジル(レアル) -> 円
puts exchange_rate(1,'brl','jpy')
end
--
結果.
76.445
75.6053
42.0975
--


となっていてよい感じですな。応答値はJSONで返却されるのでruby gemに含まれているパーサでパーズしております。そんなに難しくないですが、、実際にコピペで使えるサンプルコードがどこにもないと結構不便ですよねというので、、動くものを記載しておきます。

ちょっと利用制限が少ないですが、1日に数回cronで回す程度の処理を想定していれば利用価値かるかと思います。
prevhome next












トラックバックURL
→http://tachiphoto.blog61.fc2.com/tb.php/1473-664d5ec8
home
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。