mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
db9445103c
* 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
154 lines
3.2 KiB
Ruby
154 lines
3.2 KiB
Ruby
require 'soap/mapping'
|
|
|
|
|
|
module RAA; extend SOAP
|
|
|
|
|
|
InterfaceNS = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
|
|
MappingRegistry = SOAP::Mapping::Registry.new
|
|
|
|
Methods = [
|
|
['getAllListings', ['retval', 'return']],
|
|
['getProductTree', ['retval', 'return']],
|
|
['getInfoFromCategory', ['in', 'category'], [ 'retval', 'return']],
|
|
['getModifiedInfoSince', ['in', 'time'], [ 'retval', 'return']],
|
|
['getInfoFromName', ['in', 'name'], ['retval', 'return']],
|
|
]
|
|
|
|
|
|
class Category
|
|
include SOAP::Marshallable
|
|
|
|
@@schema_type = 'Category'
|
|
@@schema_ns = InterfaceNS
|
|
|
|
attr_reader :major, :minor
|
|
|
|
def initialize(major, minor = nil)
|
|
@major = major
|
|
@minor = minor
|
|
end
|
|
|
|
def to_s
|
|
"#{ @major }/#{ @minor }"
|
|
end
|
|
|
|
def ==(rhs)
|
|
if @major != rhs.major
|
|
false
|
|
elsif !@minor or !rhs.minor
|
|
true
|
|
else
|
|
@minor == rhs.minor
|
|
end
|
|
end
|
|
end
|
|
|
|
MappingRegistry.set(
|
|
::RAA::Category,
|
|
::SOAP::SOAPStruct,
|
|
::SOAP::Mapping::Registry::TypedStructFactory,
|
|
{ :type => XSD::QName.new(InterfaceNS, "Category") }
|
|
)
|
|
|
|
class Product
|
|
include SOAP::Marshallable
|
|
|
|
@@schema_type = 'Product'
|
|
@@schema_ns = InterfaceNS
|
|
|
|
attr_reader :id, :name
|
|
attr_accessor :short_description, :version, :status, :homepage, :download, :license, :description
|
|
|
|
def initialize(name, short_description = nil, version = nil, status = nil, homepage = nil, download = nil, license = nil, description = nil)
|
|
@name = name
|
|
@short_description = short_description
|
|
@version = version
|
|
@status = status
|
|
@homepage = homepage
|
|
@download = download
|
|
@license = license
|
|
@description = description
|
|
end
|
|
end
|
|
|
|
MappingRegistry.set(
|
|
::RAA::Product,
|
|
::SOAP::SOAPStruct,
|
|
::SOAP::Mapping::Registry::TypedStructFactory,
|
|
{ :type => XSD::QName.new(InterfaceNS, "Product") }
|
|
)
|
|
|
|
class Owner
|
|
include SOAP::Marshallable
|
|
|
|
@@schema_type = 'Owner'
|
|
@@schema_ns = InterfaceNS
|
|
|
|
attr_reader :id
|
|
attr_accessor :email, :name
|
|
|
|
def initialize(email, name)
|
|
@email = email
|
|
@name = name
|
|
@id = "#{ @email }-#{ @name }"
|
|
end
|
|
end
|
|
|
|
MappingRegistry.set(
|
|
::RAA::Owner,
|
|
::SOAP::SOAPStruct,
|
|
::SOAP::Mapping::Registry::TypedStructFactory,
|
|
{ :type => XSD::QName.new(InterfaceNS, "Owner") }
|
|
)
|
|
|
|
class Info
|
|
include SOAP::Marshallable
|
|
|
|
@@schema_type = 'Info'
|
|
@@schema_ns = InterfaceNS
|
|
|
|
attr_accessor :category, :product, :owner, :updated, :created
|
|
|
|
def initialize(category = nil, product = nil, owner = nil, updated = nil, created = nil)
|
|
@category = category
|
|
@product = product
|
|
@owner = owner
|
|
@updated = updated
|
|
@created = created
|
|
end
|
|
|
|
def <=>(rhs)
|
|
@updated <=> rhs.updated
|
|
end
|
|
|
|
def eql?(rhs)
|
|
@product.name == rhs.product.name
|
|
end
|
|
end
|
|
|
|
MappingRegistry.set(
|
|
::RAA::Info,
|
|
::SOAP::SOAPStruct,
|
|
::SOAP::Mapping::Registry::TypedStructFactory,
|
|
{ :type => XSD::QName.new(InterfaceNS, "Info") }
|
|
)
|
|
|
|
class StringArray < Array; end
|
|
MappingRegistry.set(
|
|
::RAA::StringArray,
|
|
::SOAP::SOAPArray,
|
|
::SOAP::Mapping::Registry::TypedArrayFactory,
|
|
{ :type => XSD::XSDString::Type }
|
|
)
|
|
|
|
class InfoArray < Array; end
|
|
MappingRegistry.set(
|
|
::RAA::InfoArray,
|
|
::SOAP::SOAPArray,
|
|
::SOAP::Mapping::Registry::TypedArrayFactory,
|
|
{ :type => XSD::QName.new(InterfaceNS, 'Info') }
|
|
)
|
|
|
|
|
|
end
|