Skip to content

Instantly share code, notes, and snippets.

@mogya
Created November 15, 2012 05:52
Show Gist options
  • Save mogya/4076862 to your computer and use it in GitHub Desktop.
Save mogya/4076862 to your computer and use it in GitHub Desktop.
モバイラーズオアシス 電源マップAPIの利用サンプル
# -*- encoding: utf-8 -*-
require 'net/smtp'
require 'kconv'
require "open-uri"
require "json"
#メール関連の設定。 プログラムを使う人の環境に応じて適切に書き換えてください
from_addr = '※※※※' # 送信元のメールアドレスを設定。
mailserver={}
mailserver[:server] = 'localhost'
mailserver[:port] = 25
# gmailのメールサーバを使う場合
#mailserver[:user] = '※※※※' #gmailのユーザー名
#mailserver[:pass] = '#※※※' #gmailのパスワード(gmailのSMTPサーバをつかってメールを送るために必要)
#mailserver[:server] = 'smtp.gmail.com'
#mailserver[:port] = 587
#引数の取得
lat,lng = ARGV[0].to_f,ARGV[1].to_f if (ARGV.size>1)
to_addr = ARGV[2] if (ARGV.size[2])
if !(lat && lng && to_addr)
STDERR.puts("lat lng to_addrを指定してください")
exit
end
#モバイラーズオアシスAPIを呼び出す
mo_api_url = sprintf('http://oasis.mogya.com/api/v0/map?lat=%.5f&lng=%.5f&tag=%%E9%%9B%%BB%%E6%%BA%%90OK',lat,lng)
STDERR.puts("accessing #{mo_api_url}")
ret = JSON.parse(open(mo_api_url).read)
#結果を取得
if('ZERO_RESULTS'==ret['status']) #スポットが見つからなかったとき
STDERR.puts( "電源のあるお店は見つかりませんでした(><)" )
exit
end
if('OK'!=ret['status']) #ZERO_RESULTS以外のエラー
STDERR.puts("error")
STDERR.puts(ret['status'])
STDERR.puts(ret['message']) if ret['message']
exit
end
map_url = ret['url'] #このURLが、モバイラーズオアシスでの結果を表示するURLです。
subject = "電源マップ" #メールタイトル
body = "ごしゅじんさまが今おられるあたりの電源マップですよ!\n"+map_url #メール本文
#メールを送る
STDERR.puts("sending mail...")
header = {}
header['Date'] = Time::now.strftime("%a, %d %b %Y %X")
header['From'] = from_addr
header['To'] = to_addr
header['Subject'] = subject.tojis.force_encoding('binary')
header['MimeVersion'] = '1.0'
header['Content-Type'] = 'text/plain; charset=iso-2022-jp'
mailsrc = ''
header.each_pair{|k,v|
mailsrc = mailsrc+"#{k}:#{v}\n"
}
mailsrc = mailsrc+"\n#{body.tojis.force_encoding('binary')}"
if (587==mailserver[:port])
smtp = Net::SMTP.new(mailserver[:server], mailserver[:port])
smtp.enable_starttls
smtp.start('localhost.localdomain', mailserver[:user], mailserver[:pass], :plain) do |connection|
connection.send_message(mailsrc , from_addr, to_addr)
end
else
Net::SMTP.start(mailserver[:server], mailserver[:port]) do |connection|
connection.send_message(mailsrc , from_addr, to_addr)
end
end
STDERR.puts("done.")
# 参考:RubyでGMailを使ってメールを送信する (2) - Ruby 1.9.2 + charset='utf-8' & charset='iso-2022-jp' - 会長@腹部日記(2010-12-22) :
# http://www.tamoot.net/d/20101222.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment