Method: SalesforceAdapter::SoapWrapper#generate_soap_classes
- Defined in:
- lib/dm-salesforce-adapter/soap_wrapper.rb
#generate_soap_classes ⇒ Object
# 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 |