class Nabortu::Methods::Base

Attributes

params[RW]
response[RW]

Public Class Methods

do_request(method_name, params = {}) click to toggle source
# File lib/nabortu/methods/base.rb, line 7
def self.do_request(method_name, params = {})
  new(method_name, params).do_request
end
new(method_name, params = {}) click to toggle source
# File lib/nabortu/methods/base.rb, line 11
def initialize(method_name, params = {})
  @method_name, @params, @response = method_name, params, nil
end

Public Instance Methods

do_request() click to toggle source
# File lib/nabortu/methods/base.rb, line 15
def do_request
  prepare_result soap_client.call(@method_name, message: request(@params))
rescue => error # Catch all exceptions
  fail_callback(error)
end

Protected Instance Methods

do_prepare() click to toggle source
# File lib/nabortu/methods/base.rb, line 62
def do_prepare
  @response
end
fail_callback(error) click to toggle source
# File lib/nabortu/methods/base.rb, line 49
def fail_callback(error)
  raise error
end
prepare_result(response) click to toggle source
# File lib/nabortu/methods/base.rb, line 53
def prepare_result(response)
  @response = response.to_hash[:"#{@method_name}_response"][:"#{@method_name}_result"]
  do_prepare
rescue
  @response = false
ensure
  @response
end
request(params = {}) click to toggle source
# File lib/nabortu/methods/base.rb, line 45
def request(params = {})
  raise StandardError.new("You try execute abstract method 'request' of Nabortu::Methods::Base")
end
soap_client() click to toggle source
# File lib/nabortu/methods/base.rb, line 23
def soap_client
  params = {
      wsdl:                 Nabortu.config.url,
      open_timeout:         3000,
      read_timeout:         3000,
      element_form_default: 'unqualified',
      soap_header: {
          'AuthentificationHeader' => {
              'Login'     => Nabortu.config.login,
              'Password'  => Nabortu.config.password,
              'PartnerId' => Nabortu.config.partner_id
          },
          attributes!: { 'AuthentificationHeader' => { 'xmlns' => 'http://www.nabortu.ru/'} }
      },
      logger: Rails.logger,
      log: true,
      log_level: :info
  }

  Savon.client(params) { convert_request_keys_to :camelcase }
end