Class: SBIClient::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/sbiclient.rb

Overview

クライアント

Constant Summary collapse

DEFAULT_HOST_NAME =

ホスト名

"https://mobile.sbisec.co.jp/web/visitor/loginUser.do"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(proxy = nil) ⇒ Client

コンストラクタ

proxy

プロキシホストを利用する場合、そのホスト名とパスを指定します。

例) proxyhost.com:80



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/sbiclient.rb', line 51

def initialize( proxy=nil )
  @client = Mechanize.new {|c|
    # プロキシ
    if proxy 
      uri = URI.parse( proxy )
      c.set_proxy( uri.host, uri.port )
    end
  }
  @client.keep_alive = false
  @client.max_history=0
  Mechanize::AGENT_ALIASES["KDDI-CA39"] = \
    'KDDI-CA39 UP.Browser/6.2.0.13.1.5 (GUI) MMP/2.0'
  @client.user_agent_alias = "KDDI-CA39"
  @host_name = DEFAULT_HOST_NAME
end

Instance Attribute Details

#host_nameObject

ホスト名



104
105
106
# File 'lib/sbiclient.rb', line 104

def host_name
  @host_name
end

Class Method Details

.error(page) ⇒ Object



97
98
99
100
101
# File 'lib/sbiclient.rb', line 97

def self.error( page )
    msgs = page.body.scan( /<[fF][oO][nN][tT]\s+[cC][oO][lL][oO][rR]="?#FF0000"?>([^<]*)</ ).flatten
    error = !msgs.empty? ? msgs.map{|m| m.strip}.join(",") : page.body
    raise "operation failed.detail=#{error}".toutf8 
end

Instance Method Details

#fx_session(userid, password, order_password, options = {}, &block) ⇒ Object

ログインし、セッションを開始します。 -ブロックを指定した場合、引数としてセッションを指定してブロックを実行します。ブロック実行後、ログアウトします。 -そうでない場合、セッションを返却します。この場合、SBIClient::FX::FxSession#logoutを実行しログアウトしてください。

userid

ユーザーID

password

パスワード

order_password

取引パスワード

options

オプション

戻り値

SBIClient::FX::FxSession



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/sbiclient.rb', line 76

def fx_session( userid, password, order_password, options={}, &block )
  
  # ログイン
  page = @client.get(@host_name)
  SBIClient::Client.error(page)  if page.forms.length <= 0
  form = page.forms.first
  form.username = userid
  form.password = password
  result = @client.submit(form, form.buttons.first) 
  SBIClient::Client.error(result)  unless result.title.toutf8 =~ /SBI証券.*メンバートップ/
  session = FX::FxSession.new( @client, order_password, result, options )
  if block_given?
    begin
      yield session
    ensure
      session.logout
    end
  else
    return session
  end
end