ruby--ruby/sample/soap/raa/iRAA.rb

155 lines
3.2 KiB
Ruby
Raw Normal View History

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