class Ragoon::Client
Attributes
endpoint[R]
response[R]
Public Class Methods
new(endpoint, options)
click to toggle source
# File lib/ragoon/client.rb, line 4 def initialize(endpoint, options) @endpoint = endpoint @options = options end
Public Instance Methods
request(action_name, body_node)
click to toggle source
# File lib/ragoon/client.rb, line 9 def request(action_name, body_node) retry_count = @options[:retry].to_i retry_count.times do begin request_once(action_name, body_node) return rescue Ragoon::Error => e unless e.message.include?('指定された画面はアクセスできません。') raise e end sleep(0.5) end end raise Ragoon::Error.new("試行回数が#{retry_count}回を超えたので終了しました。") end
reset()
click to toggle source
# File lib/ragoon/client.rb, line 30 def reset @result_set = nil end
result_set()
click to toggle source
# File lib/ragoon/client.rb, line 26 def result_set @result_set ||= Nokogiri::XML.parse(response.body) end
Private Instance Methods
raise_error()
click to toggle source
# File lib/ragoon/client.rb, line 52 def raise_error raise Ragoon::Error.new( result_set.xpath('//soap:Reason').text.strip, result_set.xpath('//soap:Detail/*').map { |c| [c.name, c.text.strip] }.to_h ) end
request_once(action_name, body_node)
click to toggle source
# File lib/ragoon/client.rb, line 36 def request_once(action_name, body_node) reset @action_name = action_name @body_node = body_node rest_options = {} if (@options[:skip_verify_ssl]) rest_options[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE end rest_client = RestClient::Resource.new(endpoint, rest_options) @response = rest_client.post(Ragoon::XML.render(action_name, body_node, @options)) ensure raise_error unless result_set.xpath('//soap:Fault').empty? end