概要
気がついたら、Googleの為替取得用のAPIが使えなくなっていたので、その代替えとして、Git Hub - ExchangeRatesを使う事にしました。
このAPIを使うと
http://rate-exchange.appspot.com/currency?from=usd&to=jpyのurlで、下記なようなjsonが取得できます。
{
to: "jpy",
rate: 109.365,
from: "usd"
}
urlのパラメータでfromとtoを変えることで、ユーロや元など他の通貨にも対応可能です。使い方
今回やりたい事は、1日1回夜間のバッチで為替レートを取得するため、rake で実行する、スクリプトを作成しました。
そのコードを下記します。
# -*- encoding : utf-8 -*-
namespace :batch do
desc '為替のレートを取得する'
task :rate => :environment do |task|
begin
Rate.transaction do
# ドル
usd_jpy_url = "http://rate-exchange.appspot.com/currency?from=usd&to=jpy"
source = open(usd_jpy_url).read()
json = JSON.parser.new(source)
usd_hash = json.parse()
puts "USD : #{usd_hash['rate']}"
usd_rate = Rate.find_by_code('usd')
usd_rate.rateval = usd_hash['rate']
usd_rate.save!
# ユーロ
eur_jpy_url = "http://rate-exchange.appspot.com/currency?from=eur&to=jpy"
source = open(eur_jpy_url).read()
json = JSON.parser.new(source)
eur_hash = json.parse()
puts "EUR : #{eur_hash['rate']}"
eur_rate = Rate.find_by_code('eur')
eur_rate.rateval = eur_hash['rate']
eur_rate.save!
# 元
cny_jpy_url = "http://rate-exchange.appspot.com/currency?from=cny&to=jpy"
source = open(cny_jpy_url).read()
json = JSON.parser.new(source)
cny_hash = json.parse()
puts "CNY : #{cny_hash['rate']}"
cny_rate = Rate.find_by_code('cny')
cny_rate.rateval = cny_hash['rate']
cny_rate.save!
end # Userd transaction end
puts "success : #{Time.now}"
rescue => e
puts "error : #{Time.now} : #{e.message}"
end
end
end
putsでは下記のような値が出力されます。"USD : 109.441"
"EUR : 137.241"
"CNY : 17.8184"
後は、これをcronに設定するば終了です。
0 件のコメント:
コメントを投稿