Sha256: a5d8ac1b80b6cc666dbcb06b91f439e723d479b2c24ed372b5936b21aa3eebb6
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 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 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 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.1 | lib/ragoon/client.rb |