NAME
WSDL::Compile - Compile SOAP WSDL from your Moose classes.
SYNOPSIS
# Name of your WebService: Example
# Op stands for Operation
# Your method is CreateCustomer
#
# Request - what you expect to receive
package Example::Op::CreateCustomer::Request;
use Moose;
use MooseX::Types::XMLSchema qw( :all );
use WSDL::Compile::Meta::Attribute::WSDL;
has 'FirstName' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:string',
required => 1,
xs_minOccurs => 1,
);
has 'LastName' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:string',
required => 1,
xs_minOccurs => 1,
);
has 'Contacts' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'ArrayRef[Example::CT::Contact]',
xs_maxOccurs => undef,
);
# Response - that's what will be sent back
package Example::Op::CreateCustomer::Response;
use Moose;
use MooseX::Types::XMLSchema qw( :all );
use WSDL::Compile::Meta::Attribute::WSDL;
has 'CustomerID' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:int',
required => 1,
xs_minOccurs => 1,
);
# Fault - class that defines faultdetails
package Example::Op::CreateCustomer::Fault;
use Moose;
use MooseX::Types::XMLSchema qw( :all );
use WSDL::Compile::Meta::Attribute::WSDL;
has 'Code' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:int',
);
has 'Description' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:string',
);
# CT stands for ComplexType
# So you can have more complex data structures
package Example::CT::Contact;
use Moose;
use MooseX::Types::XMLSchema qw( :all );
use WSDL::Compile::Meta::Attribute::WSDL;
has 'AddressLine1' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:string',
);
has 'AddressLine2' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'Maybe[xs:string]',
);
has 'City' => (
metaclass => 'WSDL',
is => 'rw',
isa => 'xs:string',
);
# below could be put in a script
package main;
use strict;
use warnings;
use WSDL::Compile;
my $gen = WSDL::Compile->new(
service => {
name => 'Example',
tns => 'http://localhost/Example',
documentation => 'Example Web Service',
},
operations => [
qw/
CreateCustomer
/
],
);
my $wsdl = $gen->generate_wsdl();
print $wsdl;
Please take a look at example/ directory and/or tests for more details.
ATTRIBUTES
namespace
Namespace for SOAP classes.
service
Hashref with following elements:
name
Name of web service
tns
Target namaspace
documentation
Description of web service
operations
Arrayref of all operations available in web service
FUNCTIONS
generate_wsdl
Compile a WSDL file based on the classes. Returns string that you should save as .wsdl file.
build_messages
Builds wsdl:message.
build_portType
Builds wsdl:portType.
build_binding
Builds wsdl:binding.
build_service
Builds wsdl:service.
build_definitions
Builds wsdl:definitions.
build_documentation
Builds wsdl:documentation.
build_types
Builds wsdl:types.
AUTHOR
Alex J. G. Burzyński, <ajgb at cpan.org>
BUGS
Please report any bugs or feature requests to bug-wsdl-compile at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WSDL-Compile. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
COPYRIGHT & LICENSE
Copyright 2009 Alex J. G. Burzyński.
This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License.