class SalesforceAdapter::Operations::WebserviceCall
Public Class Methods
new(rforce_binding, method_name, arguments, schema_url, service_path)
click to toggle source
Calls superclass method
SalesforceAdapter::Operations::Base::new
# File lib/salesforce_adapter/operations/webservice_call.rb, line 8 def initialize(rforce_binding, method_name, arguments, schema_url, service_path) @method_name = method_name.to_s @arguments = arguments || {} @schema_url = schema_url @service_path = service_path super(rforce_binding) end
Private Instance Methods
cast(value)
click to toggle source
Convert a value before sending it to salesforce
# File lib/salesforce_adapter/operations/webservice_call.rb, line 58 def cast(value) if [TrueClass, FalseClass].include? value.class value else value.to_s end end
context()
click to toggle source
# File lib/salesforce_adapter/operations/webservice_call.rb, line 20 def context "calling webservice method #{@method_name} with arguments #{@arguments.inspect}.\n Schema url: #{@schema_url}, service path: #{@service_path}" end
format_response()
click to toggle source
# File lib/salesforce_adapter/operations/webservice_call.rb, line 28 def format_response @response[:"#{@method_name}Response"][:result] end
formatted_arguments()
click to toggle source
Formatted arguments for WS call : need to be like [:key1, value1, :key2, value2]
# File lib/salesforce_adapter/operations/webservice_call.rb, line 49 def formatted_arguments [].tap do |formatted_arguments| @arguments.each do |name, value| formatted_arguments << name << cast(value) end end end
perform()
click to toggle source
# File lib/salesforce_adapter/operations/webservice_call.rb, line 24 def perform rforce_binding.call_remote(@method_name, formatted_arguments){ [@schema_url, @service_path] } end
validate_response!()
click to toggle source
Rescue missing methods by inspecting the content of the response
Calls superclass method
SalesforceAdapter::Operations::Base#validate_response!
# File lib/salesforce_adapter/operations/webservice_call.rb, line 33 def validate_response! begin super rescue SalesforceApiFault => e # Change the exception to a NoMethodError if undefined on salesforce if e.message =~ /No operation available for request/ raise NoMethodError.new(e.message) else raise e end end end