diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-09-24 15:18:44 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-09-24 15:18:44 +0000 |
commit | db9445103c082a306ba085f7677da02ea94b8841 (patch) | |
tree | a311d59f031ae5def87f68be71ed1f58abadc031 /lib/wsdl/importer.rb | |
parent | 8c2fb77787d1f20b4c19c9c52552856c339b86e9 (diff) | |
download | ruby-db9445103c082a306ba085f7677da02ea94b8841.tar.gz |
* lib/soap/* (29 files): SOAP4R added.
* lib/wsdl/* (42 files): WSDL4R added.
* lib/xsd/* (12 files): XSD4R added.
* test/soap/* (16 files): added.
* test/wsdl/* (2 files): added.
* test/xsd/* (3 files): added.
* sample/soap/* (27 files): added.
* sample/wsdl/* (13 files): added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/wsdl/importer.rb')
-rw-r--r-- | lib/wsdl/importer.rb | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/wsdl/importer.rb b/lib/wsdl/importer.rb new file mode 100644 index 0000000000..794e7fc74d --- /dev/null +++ b/lib/wsdl/importer.rb @@ -0,0 +1,75 @@ +=begin +WSDL4R - WSDL importer library. +Copyright (C) 2003 NAKAMURA, Hiroshi. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PRATICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 675 Mass +Ave, Cambridge, MA 02139, USA. +=end + + +require 'wsdl/info' + + +module WSDL + + +class Importer + def self.import(location) + new.import(location) + end + + def initialize + @web_client = nil + end + + def import(location) + content = nil + if FileTest.exist?(location) + content = File.open(location).read + else + proxy = ENV['http_proxy'] || ENV['HTTP_PROXY'] + content = web_client.new(proxy, "WSDL4R").get_content(location) + end + opt = {} # charset? + begin + WSDL::Parser.new(opt).parse(content) + rescue WSDL::Parser::ParseError => orgexcn + begin + require 'wsdl/xmlSchema/parser' + WSDL::XMLSchema::Parser.new(opt).parse(content) + rescue + raise orgexcn + end + end + end + +private + + def web_client + @web_client ||= begin + require 'http-access2' + if HTTPAccess2::VERSION < "2.0" + raise LoadError.new("http-access/2.0 or later is required.") + end + HTTPAccess2::Client + rescue LoadError + STDERR.puts "Loading http-access2 failed. Net/http is used." if $DEBUG + require 'soap/netHttpClient' + ::SOAP::NetHttpClient + end + @web_client + end +end + + +end |