class ViafirmaApi::Client

Public Class Methods

new(credentials) click to toggle source
# File lib/viafirma-api/client.rb, line 6
def initialize(credentials)
  validate(credentials)
  @client = Savon.client(adapter: :net_http, wsdl: self.class.wsdl(credentials), basic_auth: [credentials[:user], credentials[:apikey]])
end
wsdl(credentials) click to toggle source
# File lib/viafirma-api/client.rb, line 11
def self.wsdl(credentials)
  "http://#{credentials[:server]}:#{credentials[:port] || 80}/inbox/serviceWS?wsdl"
end

Public Instance Methods

call(*args) click to toggle source
# File lib/viafirma-api/client.rb, line 15
def call(*args)
  response = @client.call(*args)
  parse_response(response.body)
end
parse_response(response) click to toggle source
# File lib/viafirma-api/client.rb, line 20
def parse_response(response)
  response_key = response.keys.detect{|k,v| k.to_s.end_with?('_response')}
  data = response[response_key][:return]

  if data[:error]
    raise "#{data[:response_code]}: #{data[:message]}"
  else
    data
  end
end

Private Instance Methods

validate(credentials) click to toggle source
# File lib/viafirma-api/client.rb, line 33
def validate(credentials)
  raise "Server endpoint missing!!" if credentials[:server].blank?
  raise "User can't be blank!!" if credentials[:user].blank?
  raise "Apikey can't be blank!!" if credentials[:apikey].blank?
end