Method: SalesforceAdapter::SoapWrapper#generate_soap_classes

Defined in:
lib/dm-salesforce-adapter/soap_wrapper.rb

#generate_soap_classesObject

# Attempt at a run-time equivalent. Works except for the API responses are

# in SOAP objects, not native ruby objects.  Haven't figured that one out..
def driver
  return @driver if @driver

  require 'wsdl/soap/wsdl2ruby'

  factory            = SOAP::WSDLDriverFactory.new(wsdl_path)
  class_name_creator = WSDL::SOAP::ClassNameCreator.new

  eval(WSDL::SOAP::ClassDefCreator.new(factory.wsdl, class_name_creator, @module_name).dump, TOPLEVEL_BINDING)
  eval(WSDL::SOAP::MappingRegistryCreator.new(factory.wsdl, class_name_creator, @module_name).dump, TOPLEVEL_BINDING)

  @driver ||= factory.create_rpc_driver
end


35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/dm-salesforce-adapter/soap_wrapper.rb', line 35

def generate_soap_classes
  unless File.file?(wsdl_path)
    raise Errno::ENOENT, "Could not find the WSDL at #{wsdl_path}"
  end

  FileUtils.mkdir_p(wsdl_api_dir)

  generate_files unless files_exist?

  $:.push wsdl_api_dir
  require "#{module_name}Driver"
  $:.delete wsdl_api_dir
end