Sha256: b4b30f053ae55092d9232c05b3aea7168ddfeed7d66331c0d955714597f2c550
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
class Ragoon::Client attr_reader :endpoint, :response def initialize(endpoint, options) @endpoint = endpoint @options = options end 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 def result_set @result_set ||= Nokogiri::XML.parse(response.body) end def reset @result_set = nil end private def request_once(action_name, body_node) reset @action_name = action_name @body_node = body_node @response = RestClient.post(endpoint, Ragoon::XML.render(action_name, body_node, @options)) ensure raise_error unless result_set.xpath('//soap:Fault').empty? end 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 end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ragoon-1.1.0 | lib/ragoon/client.rb |