module Salesforce::Connection::SoapApi::ClassMethods

Public Instance Methods

convert_lead(lead_converts) click to toggle source
# File lib/salesforce/connection/soap_api.rb, line 23
def convert_lead(lead_converts)
  options = { :body => { :leadConverts => lead_converts } }
  
  as_logged_in_user do
    invoke_soap(:convertLead, options)
  end
end
login() click to toggle source
# File lib/salesforce/connection/soap_api.rb, line 10
def login
  options = { 
    :endpoint_url => Config.login_url,
    :body         => { 
      :username => Config.username, 
      :password => Config.password, 
      :order!   => [ :username, :password ] 
    } 
  }
  
  invoke_soap(:login, options)
end

Protected Instance Methods

invoke_soap(method_name, options) click to toggle source
# File lib/salesforce/connection/soap_api.rb, line 33
def invoke_soap(method_name, options)
  client_options = {
    namespace: options[:namespace] ||= Config.soap_enterprise_namespace,
    endpoint: options[:endpoint_url] ||= Config.soap_endpoint_url
  }

  additional_call_options = {}
  unless method_name.to_sym == :login
    additional_call_options[:soap_header] = {
      "ns1:SessionHeader" => { "ns1:sessionId" => Config.session_id }
    }

    client_options[:namespaces] = {
      "xmlns:ns1" => Config.soap_enterprise_namespace,
    }
  end

  client = soap_client(client_options)
  result = client.call(method_name.to_sym, { message: options[:body] }.merge(additional_call_options))
  
  result.body[:"#{method_name.to_s.underscore}_response"][:result].tap do |result|
    unless result[:success] || method_name.to_sym == :login
      raise_error(method_name, options, result[:errors])
    end
  end
end
raise_error(method_name, options, errors) click to toggle source
# File lib/salesforce/connection/soap_api.rb, line 64
        def raise_error(method_name, options, errors)
          message = <<-MSG
\n
  METHOD_NAME: #{method_name}
  OPTIONS: #{options.inspect}
  ERRORS: #{errors.inspect}
MSG
          
          raise Error.new(message)
        end
soap_client(options) click to toggle source
# File lib/salesforce/connection/soap_api.rb, line 60
def soap_client(options)
  Savon.client(options.merge(log: false))
end