| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package W3C::SOAP; |
|
2
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
# Created on: 2012-06-29 07:52:54 |
|
4
|
|
|
|
|
|
|
# Create by: Ivan Wills |
|
5
|
|
|
|
|
|
|
# $Id$ |
|
6
|
|
|
|
|
|
|
# $Revision$, $HeadURL$, $Date$ |
|
7
|
|
|
|
|
|
|
# $Revision$, $Source$, $Date$ |
|
8
|
|
|
|
|
|
|
|
|
9
|
1
|
|
|
1
|
|
889
|
use Moose; |
|
|
1
|
|
|
|
|
352303
|
|
|
|
1
|
|
|
|
|
8
|
|
|
10
|
1
|
|
|
1
|
|
5434
|
use warnings; |
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
24
|
|
|
11
|
1
|
|
|
1
|
|
593
|
use version; |
|
|
1
|
|
|
|
|
1517
|
|
|
|
1
|
|
|
|
|
6
|
|
|
12
|
1
|
|
|
1
|
|
53
|
use Carp; |
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
67
|
|
|
13
|
1
|
|
|
1
|
|
481
|
use English qw/ -no_match_vars /; |
|
|
1
|
|
|
|
|
1578
|
|
|
|
1
|
|
|
|
|
6
|
|
|
14
|
1
|
|
|
1
|
|
823
|
use W3C::SOAP::XSD::Parser qw/load_xsd/; |
|
|
0
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
use W3C::SOAP::WSDL::Parser qw/load_wsdl/; |
|
16
|
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
Moose::Exporter->setup_import_methods( |
|
18
|
|
|
|
|
|
|
as_is => [qw/load_wsdl load_xsd/], |
|
19
|
|
|
|
|
|
|
); |
|
20
|
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
our $VERSION = version->new('0.11'); |
|
22
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
1; |
|
24
|
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
__END__ |
|
26
|
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
=head1 NAME |
|
28
|
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
W3C::SOAP - Static and dynamic SOAP client generator from WSDL & XSD files |
|
30
|
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
=head1 VERSION |
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
This documentation refers to W3C::SOAP version 0.11. |
|
34
|
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
36
|
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
# Dynamically created clients |
|
38
|
|
|
|
|
|
|
use W3C::SOAP qw/load_wsdl/; |
|
39
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
# load some wsdl file |
|
41
|
|
|
|
|
|
|
my $wsdl = load_wsdl("http://example.com/eg.wsdl"); |
|
42
|
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
# call a method exported by the WSDL |
|
44
|
|
|
|
|
|
|
$wsdl->some_method( HASH | HASH_REF ); |
|
45
|
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
# A real world example |
|
47
|
|
|
|
|
|
|
my $wsdl = load_wsdl('http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl'); |
|
48
|
|
|
|
|
|
|
my $res = $wsdl->resolve_ip( ip_address => '59.106.161.11', license_key => 0 ); |
|
49
|
|
|
|
|
|
|
printf "lat: %.4f\n", $res->resolve_ipresult->latitude; |
|
50
|
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
# load some xsd file |
|
52
|
|
|
|
|
|
|
my $xsd = load_xsd("http://example.com/eg.xsd"); |
|
53
|
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
# create a new object of of the XSD |
|
55
|
|
|
|
|
|
|
my $obj = $xsd->new( HASH | HASH_REF ); |
|
56
|
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
# Statically created clients |
|
58
|
|
|
|
|
|
|
# on the command line build Client module (and included XSD modules) |
|
59
|
|
|
|
|
|
|
# see wsdl-parser --help for more details |
|
60
|
|
|
|
|
|
|
$ wsdl-parser -b ResolveIP ResolveIP 'http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl' |
|
61
|
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
# back in perl |
|
63
|
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
# the default directory modules are created into |
|
65
|
|
|
|
|
|
|
use lib 'lib'; |
|
66
|
|
|
|
|
|
|
# load the ResolveIP client module |
|
67
|
|
|
|
|
|
|
use ResolveIP; |
|
68
|
|
|
|
|
|
|
# Create a client object |
|
69
|
|
|
|
|
|
|
my $client = ResolveIP->new(); |
|
70
|
|
|
|
|
|
|
# call the WS |
|
71
|
|
|
|
|
|
|
my $res = $client->resolve_ip( ip_address => '59.106.161.11', license_key => 0 ); |
|
72
|
|
|
|
|
|
|
# show the results |
|
73
|
|
|
|
|
|
|
printf "lat: %.4f\n", $res->resolve_ipresult->latitude; |
|
74
|
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
=head1 DESCRIPTION |
|
76
|
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
A perly SOAP client library. To see more details on how to generate a WSDL client |
|
78
|
|
|
|
|
|
|
see L<W3C::SOAP::WSDL::Parser>, and for generating Moose objects from XSD files |
|
79
|
|
|
|
|
|
|
see L<W3C::SOAP::XSD::Parser>. |
|
80
|
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
=head2 Gotchas |
|
82
|
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
Java style camel case names are converted to the more legible Perl style underscore |
|
84
|
|
|
|
|
|
|
separated names for everything that doesn't end up being a Perl package or Moose |
|
85
|
|
|
|
|
|
|
type. Eg in the Synopsis the operation defined in the IP 2 GEO WSDL is defined as |
|
86
|
|
|
|
|
|
|
ResolveIP this is translated to the perly name resolve_ip. |
|
87
|
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
=head2 Debugging |
|
89
|
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
When something goes wrong there are two ways to see what XML is being sent and |
|
91
|
|
|
|
|
|
|
received. |
|
92
|
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
=over 4 |
|
94
|
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
=item 1 |
|
96
|
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
The C<$W3C_SOAP_DEBUG_CLIENT> environment variable will cause the all request |
|
98
|
|
|
|
|
|
|
and response HTTP bodies to be dumped to STDOUT. The length of the content is |
|
99
|
|
|
|
|
|
|
limited to 1024 by default but this can be changed with the |
|
100
|
|
|
|
|
|
|
C<$W3C_SOAP_DEBUG_LENGTH> environment variable. |
|
101
|
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
=item 2 |
|
103
|
|
|
|
|
|
|
|
|
104
|
|
|
|
|
|
|
Supplying a log object. When a client is instantiated you can supply it a log |
|
105
|
|
|
|
|
|
|
object or after creation supply the C<log> method with a log object, the only |
|
106
|
|
|
|
|
|
|
restriction is that it implements C<debug, info, warn, error and fatal> |
|
107
|
|
|
|
|
|
|
methods. L<Log::Log4perl> and C<Catalyst::Log> are known working examples. |
|
108
|
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
eg |
|
110
|
|
|
|
|
|
|
my $client = ResolveIP->new(log => $log); |
|
111
|
|
|
|
|
|
|
or |
|
112
|
|
|
|
|
|
|
$client->log($log); |
|
113
|
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
=back |
|
115
|
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
Both methods can be used together. |
|
117
|
|
|
|
|
|
|
|
|
118
|
|
|
|
|
|
|
=head1 SUBROUTINES/METHODS |
|
119
|
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
=over 4 |
|
121
|
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
=item C<load_wsdl ($wsdl_location)> |
|
123
|
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
Loads a WSDL file, parses is and generates dynamic Moose objects that represent |
|
125
|
|
|
|
|
|
|
the WSDL file and any XML Schema xsd content that it refers to. |
|
126
|
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
See L<W3C::SOAP::WSDL::Parser> for more details. |
|
128
|
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
=item C<load_xsd ($xsd_location)> |
|
130
|
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
Loads an XML Schema (.xsd) file, parses is and generates dynamic Moose objects |
|
132
|
|
|
|
|
|
|
that representing that schema and any other included/imported XML Schema |
|
133
|
|
|
|
|
|
|
content that it refers to. |
|
134
|
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
See L<W3C::SOAP::XSD::Parser> for more details. |
|
136
|
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
=back |
|
138
|
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
=head1 DIAGNOSTICS |
|
140
|
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
=head1 CONFIGURATION AND ENVIRONMENT |
|
142
|
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
=over 4 |
|
144
|
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
=item C<$W3C_SOAP_DEBUG_CLIENT> |
|
146
|
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
If this environment variable is a true value it will turn on printing request |
|
148
|
|
|
|
|
|
|
and response HTTP messages bodies to STDOUT. |
|
149
|
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
=item C<$W3C_SOAP_DEBUG_LENGTH> |
|
151
|
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
Alter the amount of data shown by C<$W3C_SOAP_DEBUG_CLIENT> which defaults to |
|
153
|
|
|
|
|
|
|
1024. |
|
154
|
|
|
|
|
|
|
|
|
155
|
|
|
|
|
|
|
=back |
|
156
|
|
|
|
|
|
|
|
|
157
|
|
|
|
|
|
|
=head1 DEPENDENCIES |
|
158
|
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
=head1 INCOMPATIBILITIES |
|
160
|
|
|
|
|
|
|
|
|
161
|
|
|
|
|
|
|
Perl 5.18 see below. |
|
162
|
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
=head1 BUGS AND LIMITATIONS |
|
164
|
|
|
|
|
|
|
|
|
165
|
|
|
|
|
|
|
Currently the WSDL handling doesn't deal with more than one input or output |
|
166
|
|
|
|
|
|
|
on an operation or inputs/outputs that aren't specified by an XMLSchema. A;so |
|
167
|
|
|
|
|
|
|
operation fault objects aren't yet handled. |
|
168
|
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
Currently there is an issue with Perl 5.18 (probably caused by L<Moose> affecting |
|
170
|
|
|
|
|
|
|
L<XML::LibXML> usage) |
|
171
|
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
Please report problems to Ivan Wills (ivan.wills@gmail.com). |
|
173
|
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
Patches are welcome. |
|
175
|
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
=head1 ALSO SEE |
|
177
|
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
L<wsdl-parser>, L<W3C::SOAP::Client>, L<XML::LibXML>, L<Moose>, L<MooseX::Types::XMLSchema> |
|
179
|
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
Inspired by L<SOAP::WSDL> & L<SOAP::Lite> |
|
181
|
|
|
|
|
|
|
|
|
182
|
|
|
|
|
|
|
=head1 AUTHOR |
|
183
|
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
Ivan Wills - (ivan.wills@gmail.com) |
|
185
|
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
=head1 LICENSE AND COPYRIGHT |
|
187
|
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
Copyright (c) 2012 Ivan Wills (14 Mullion Close, Hornsby Heights, NSW 2077 Australia). |
|
189
|
|
|
|
|
|
|
All rights reserved. |
|
190
|
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
This module is free software; you can redistribute it and/or modify it under |
|
192
|
|
|
|
|
|
|
the same terms as Perl itself. See L<perlartistic>. This program is |
|
193
|
|
|
|
|
|
|
distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
|
194
|
|
|
|
|
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
|
195
|
|
|
|
|
|
|
PARTICULAR PURPOSE. |
|
196
|
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
=cut |