Class | WSDL::XMLSchema::Importer |
In: |
lib/wsdl/xmlSchema/importer.rb
|
Parent: | Object |
# File lib/wsdl/xmlSchema/importer.rb, line 18 18: def self.import(location, originalroot = nil) 19: new.import(location, originalroot) 20: end
# File lib/wsdl/xmlSchema/importer.rb, line 26 26: def import(location, originalroot = nil) 27: unless location.is_a?(URI) 28: location = URI.parse(location) 29: end 30: content = parse(fetch(location), location, originalroot) 31: content.location = location 32: content 33: end
# File lib/wsdl/xmlSchema/importer.rb, line 45 45: def fetch(location) 46: warn("importing: #{location}") if $DEBUG 47: content = nil 48: if location.scheme == 'file' or 49: (location.relative? and FileTest.exist?(location.path)) 50: content = File.open(location.path).read 51: elsif location.scheme and location.scheme.size == 1 and 52: FileTest.exist?(location.to_s) 53: # ToDo: remove this ugly workaround for a path with drive letter 54: # (D://foo/bar) 55: content = File.open(location.to_s).read 56: else 57: client = web_client.new(nil, "WSDL4R") 58: client.proxy = ::SOAP::Env::HTTP_PROXY 59: client.no_proxy = ::SOAP::Env::NO_PROXY 60: if opt = ::SOAP::Property.loadproperty(::SOAP::PropertyName) 61: ::SOAP::HTTPConfigLoader.set_options(client, 62: opt["client.protocol.http"]) 63: end 64: content = client.get_content(location) 65: end 66: content 67: end
# File lib/wsdl/xmlSchema/importer.rb, line 37 37: def parse(content, location, originalroot) 38: opt = { 39: :location => location, 40: :originalroot => originalroot 41: } 42: WSDL::XMLSchema::Parser.new(opt).parse(content) 43: end
# File lib/wsdl/xmlSchema/importer.rb, line 69 69: def web_client 70: @web_client ||= begin 71: require 'http-access2' 72: if HTTPAccess2::VERSION < "2.0" 73: raise LoadError.new("http-access/2.0 or later is required.") 74: end 75: HTTPAccess2::Client 76: rescue LoadError 77: warn("Loading http-access2 failed. Net/http is used.") if $DEBUG 78: require 'soap/netHttpClient' 79: ::SOAP::NetHttpClient 80: end 81: @web_client 82: end