class SalesforceAdapter::Operations::Base

Attributes

rforce_binding[R]

Public Class Methods

new(rforce_binding) click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 26
def initialize(rforce_binding)
  @rforce_binding = rforce_binding
end

Public Instance Methods

run() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 31
def run
  validate_request!

  Helpers.handle_timeout(:max_tries => 4, :sleep_between_tries => 5) do
    @response = perform
  end

  validate_response!

  format_response
end

Private Instance Methods

context() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 46
def context
  "No context given"
end
format_response() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 72
def format_response
  # Nothing by default
  @response
end
perform!() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 54
def perform!
  raise NotImplementedError.new("Must be defined in subclass")
end
validate_request!() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 50
def validate_request!
  # nothing by default...
end
validate_response!() click to toggle source
# File lib/salesforce_adapter/operations/base.rb, line 58
def validate_response!
  # Check for API errors and raise them
  if @response[:Fault]

    fault_code    = @response[:Fault][:faultcode] # "sf:MALFORMED_QUERY"
    fault_details = @response[:Fault][:faultstring]

    message = "Salesforce API Fault : #{fault_details}.\nContext : #{context}"

    raise SalesforceApiFault.new(fault_code), message
  end

end