Import original source of WebService-Northern911 0.1
authorMark Wells <mark@freeside.biz>
Mon, 7 Jul 2014 03:29:15 +0000 (20:29 -0700)
committerMark Wells <mark@freeside.biz>
Mon, 7 Jul 2014 03:29:15 +0000 (20:29 -0700)
27 files changed:
.gitignore [new file with mode: 0644]
Changes [new file with mode: 0644]
MANIFEST [new file with mode: 0644]
MYMETA.json [new file with mode: 0644]
Makefile.PL [new file with mode: 0644]
README [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/source/format [new file with mode: 0644]
debian/watch [new file with mode: 0644]
ignore.txt [new file with mode: 0644]
lib/WebService/Northern911.pm [new file with mode: 0755]
lib/WebService/Northern911/Response.pm [new file with mode: 0644]
share/schema/live/wsdl [new file with mode: 0644]
share/schema/live/xsd0 [new file with mode: 0644]
share/schema/live/xsd1 [new file with mode: 0644]
share/schema/live/xsd2 [new file with mode: 0644]
share/schema/test/wsdl [new file with mode: 0644]
share/schema/test/xsd0 [new file with mode: 0644]
share/schema/test/xsd1 [new file with mode: 0644]
share/schema/test/xsd2 [new file with mode: 0644]
t/00-load.t [new file with mode: 0644]
t/manifest.t [new file with mode: 0644]
t/pod.t [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..9788afa
--- /dev/null
@@ -0,0 +1,6 @@
+blib/
+*.sw?
+Makefile
+Makefile.old
+MYMETA.yml
+pm_to_blib
diff --git a/Changes b/Changes
new file mode 100644 (file)
index 0000000..4dea726
--- /dev/null
+++ b/Changes
@@ -0,0 +1,5 @@
+Revision history for WebService-Northern911
+
+0.01    Jul  7 2014
+        Initial release
+
diff --git a/MANIFEST b/MANIFEST
new file mode 100644 (file)
index 0000000..8dedd9d
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,18 @@
+Changes
+lib/WebService/Northern911.pm
+lib/WebService/Northern911/Response.pm
+Makefile.PL
+MANIFEST                       This list of files
+README
+t/00-load.t
+t/manifest.t
+t/pod.t
+share/schema/test/xsd2
+share/schema/test/wsdl
+share/schema/test/xsd0
+share/schema/test/xsd1
+share/schema/live/xsd2
+share/schema/live/wsdl
+share/schema/live/xsd0
+share/schema/live/xsd1
+ignore.txt
diff --git a/MYMETA.json b/MYMETA.json
new file mode 100644 (file)
index 0000000..0e95f50
--- /dev/null
@@ -0,0 +1,47 @@
+{
+   "abstract" : "Interface to the Northern 911 ALI database",
+   "author" : [
+      "Mark Wells <mark@freeside.biz>"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "ExtUtils::MakeMaker version 6.8, CPAN::Meta::Converter version 2.120351",
+   "license" : [
+      "unknown"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "WebService-Northern911",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "File::ShareDir::Install" : "0",
+            "Test::More" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "DateTime" : "0",
+            "File::ShareDir" : "0",
+            "XML::Compile" : "1",
+            "XML::Compile::SOAP" : "3",
+            "XML::Compile::WSDL11" : "3",
+            "perl" : "5.006"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "version" : "0.1"
+}
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644 (file)
index 0000000..ebd2c26
--- /dev/null
@@ -0,0 +1,37 @@
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use ExtUtils::MakeMaker;
+use File::ShareDir::Install;
+
+install_share dist => 'share';
+
+WriteMakefile(
+    NAME             => 'WebService::Northern911',
+    AUTHOR           => q{Mark Wells <mark@freeside.biz>},
+    VERSION_FROM     => 'lib/WebService/Northern911.pm',
+    ABSTRACT_FROM    => 'lib/WebService/Northern911.pm',
+    LICENSE          => 'Artistic_2_0',
+    PL_FILES         => {},
+    MIN_PERL_VERSION => 5.006,
+    CONFIGURE_REQUIRES => {
+        'ExtUtils::MakeMaker' => 0,
+    },
+    BUILD_REQUIRES => {
+        'Test::More' => 0,
+        'File::ShareDir::Install' => 0,
+    },
+    PREREQ_PM => {
+        'XML::Compile'        => 1.0,
+        'XML::Compile::SOAP'  => 3.0,
+        'XML::Compile::WSDL11'=> 3.0,
+        'File::ShareDir'      => 0,
+        'DateTime'            => 0,
+    },
+    dist  => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+    clean => { FILES => 'WebService-Northern911-*' },
+);
+
+package MY;
+use File::ShareDir::Install qw(postamble);
+
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..7e979a8
--- /dev/null
+++ b/README
@@ -0,0 +1,77 @@
+WebService-Northern911
+
+Interface to Northern 911's ALI database.
+
+Requires XML::Compile::WSDL11 and XML::Compile::SOAP.
+
+INSTALLATION
+
+To install this module, run the following commands:
+
+       perl Makefile.PL
+       make
+       make test
+       make install
+
+SUPPORT AND DOCUMENTATION
+
+After installing, you can find documentation for this module with the
+perldoc command.
+
+    perldoc WebService::Northern911
+
+You can also look for information at:
+
+    RT, CPAN's request tracker (report bugs here)
+        http://rt.cpan.org/NoAuth/Bugs.html?Dist=WebService-Northern911
+
+    AnnoCPAN, Annotated CPAN documentation
+        http://annocpan.org/dist/WebService-Northern911
+
+    CPAN Ratings
+        http://cpanratings.perl.org/d/WebService-Northern911
+
+    Search CPAN
+        http://search.cpan.org/dist/WebService-Northern911/
+
+
+LICENSE AND COPYRIGHT
+
+Copyright (C) 2014 Mark Wells
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the the Artistic License (2.0). You may obtain a
+copy of the full license at:
+
+L<http://www.perlfoundation.org/artistic_license_2_0>
+
+Any use, modification, and distribution of the Standard or Modified
+Versions is governed by this Artistic License. By using, modifying or
+distributing the Package, you accept this license. Do not use, modify,
+or distribute the Package, if you do not accept this license.
+
+If your Modified Version has been derived from a Modified Version made
+by someone other than you, you are nevertheless required to ensure that
+your Modified Version complies with the requirements of this license.
+
+This license does not grant you the right to use any trademark, service
+mark, tradename, or logo of the Copyright Holder.
+
+This license includes the non-exclusive, worldwide, free-of-charge
+patent license to make, have made, use, offer to sell, sell, import and
+otherwise transfer the Package with respect to any patent claims
+licensable by the Copyright Holder that are necessarily infringed by the
+Package. If you institute patent litigation (including a cross-claim or
+counterclaim) against any party alleging that the Package constitutes
+direct or contributory patent infringement, then this Artistic License
+to you shall terminate on the date that such litigation is filed.
+
+Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER
+AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
+THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY
+YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR
+CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..250bb65
--- /dev/null
@@ -0,0 +1,5 @@
+libwebservice-northern911-perl (0.1-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Mark Wells <mark@dancingmad.dyndns.org>  Sun, 6 Jul 2014 20:25:33 -0700
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..ec63514
--- /dev/null
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..8e593d2
--- /dev/null
@@ -0,0 +1,27 @@
+Source: libwebservice-northern911-perl
+Section: perl
+Priority: optional
+Maintainer: Mark Wells <mark@dancingmad.dyndns.org>
+Build-Depends: debhelper (>= 9)
+Build-Depends-Indep: libdatetime-perl,
+ libfile-sharedir-install-perl,
+ libfile-sharedir-perl,
+ libxml-compile-perl (>= 1),
+ libxml-compile-soap-perl (>= 3),
+ libxml-compile-wsdl11-perl (>= 3),
+ perl
+Standards-Version: 3.9.5
+Homepage: https://metacpan.org/release/WebService-Northern911
+
+Package: libwebservice-northern911-perl
+Architecture: all
+Depends: ${misc:Depends}, ${perl:Depends},
+ libdatetime-perl,
+ libfile-sharedir-perl,
+ libxml-compile-perl (>= 1),
+ libxml-compile-soap-perl (>= 3),
+ libxml-compile-wsdl11-perl (>= 3)
+Description: Interface to the Northern 911 ALI database
+ (no description was found)
+ .
+ This description was automagically extracted from the module by dh-make-perl.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..fbdc7ae
--- /dev/null
@@ -0,0 +1,46 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://metacpan.org/release/WebService-Northern911
+Upstream-Contact: Mark Wells, <mark@freeside.biz>
+    .
+    Commercial support is available from Freeside Internet Services, Inc.
+Upstream-Name: WebService-Northern911
+DISCLAIMER: This copyright info was automatically extracted 
+ from the perl module. It may not be accurate, so you better 
+ check the module sources in order to ensure the module for its 
+ inclusion in Debian or for general legal information. Please, 
+ if licensing information is incorrectly generated, file a bug 
+ on dh-make-perl.
+ NOTE: Don't forget to remove this disclaimer once you are happy
+ with this file.
+
+Files: *
+Copyright: Mark Wells, <mark@freeside.biz>
+    .
+    Commercial support is available from Freeside Internet Services, Inc.
+License: unparsable
+
+Files: debian/*
+Copyright: 2014, Mark Wells <mark@dancingmad.dyndns.org>
+License: Artistic or GPL-1+ or unparsable
+
+License: Artistic
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the Artistic License, which comes with Perl.
+ .
+ On Debian systems, the complete text of the Artistic License can be
+ found in `/usr/share/common-licenses/Artistic'.
+
+License: GPL-1+
+ 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 1, or (at your option)
+ any later version.
+ .
+ On Debian systems, the complete text of version 1 of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL-1'.
+
+License: unparsable
+ No known license could be automatically determined for this module.
+ If this module conforms to a commonly used license, please report this
+ as a bug in dh-make-perl. In any case, please find the proper license
+ and fix this file!
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..2d33f6a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+       dh $@
diff --git a/debian/source/format b/debian/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..a3df09c
--- /dev/null
@@ -0,0 +1,2 @@
+version=3
+https://metacpan.org/release/WebService-Northern911   .*/WebService-Northern911-v?(\d[\d.-]*)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip)$
diff --git a/ignore.txt b/ignore.txt
new file mode 100644 (file)
index 0000000..1a2d807
--- /dev/null
@@ -0,0 +1,20 @@
+Makefile
+Makefile.old
+Build
+Build.bat
+META.*
+MYMETA.*
+.build/
+_build/
+cover_db/
+blib/
+inc/
+.lwpcookies
+.last_cover_stats
+nytprof.out
+pod2htm*.tmp
+pm_to_blib
+WebService-Northern911-*
+WebService-Northern911-*.tar.gz
+.gitignore
+.git/*
diff --git a/lib/WebService/Northern911.pm b/lib/WebService/Northern911.pm
new file mode 100755 (executable)
index 0000000..bab7e89
--- /dev/null
@@ -0,0 +1,221 @@
+package WebService::Northern911;
+
+use Digest::MD5 'md5_hex';
+use DateTime;
+use XML::Compile::WSDL11;
+use XML::Compile::SOAP11;
+use XML::Compile::Transport::SOAPHTTP;
+use File::ShareDir 'dist_dir';
+
+use WebService::Northern911::Response;
+
+our $VERSION = 0.1;
+
+=head1 NAME
+
+WebService::Northern911 - Interface to the Northern 911 ALI database
+
+=head1 SYNOPSIS
+
+use WebService::Northern911;
+
+my $n911 = WebService::Northern911->new( vendor_code => '007',
+                                  password => '280fip1@' );
+
+my $result = $n911->AddorUpdateCustomer(
+  PHONE_NUMBER    => '4015559988',
+  FIRST_NAME      => 'John',
+  LAST_NAME       => 'Doe',
+  STREET_NUMBER   => 1024,
+  STREET_NAME     => 'Main St',
+  CITY            => 'Calgary',
+  PROVINCE_STATE  => 'AB',
+  POSTAL_CODE_ZIP => 'Z1A A2Z',
+);
+if ($result->is_success) {
+  print "Updated customer."
+} else 
+  print $result->error_message;
+}
+
+=head1 METHODS
+
+=over 4  
+
+=item new OPTIONS
+
+Creates an object to access the API.  OPTIONS must include C<vendor_code>
+and C<password>.  By default, this will connect to the development API;
+for access to the live service, pass C<live> => 1.
+
+=cut
+
+sub new {
+  my $class = shift;
+  my %opt = @_;
+  my $vendor_code = $opt{vendor_code} or die "WebService::Northern911::new() requires vendor_code\n";
+  my $password = $opt{password} or die "WebService::Northern911::new() requires password\n";
+
+  # create the interface
+  # expensive, so reuse this object as much as possible
+  my $schema = dist_dir('WebService-Northern911') . '/schema';
+  if ($opt{'live'}) {
+    $schema .= '/live';
+  } else {
+    $schema .= '/test';
+  }
+
+  # yes, that's right, we have to distribute the schema with this module.
+  # XML::Compile::WSDL11 makes the argument that
+  my $client = XML::Compile::WSDL11->new("$schema/wsdl");
+  for my $xsd (<$schema/xsd*>) {
+    $client->importDefinitions($xsd);
+  }
+
+  $client->compileCalls;
+  my $self = {
+    vendor_code => $vendor_code,
+    password    => $password,
+    client      => $client,
+  };
+  bless $self, $class;
+}
+
+# internal method: returns the authentication string (referred to as the 
+# "hash" in the docs)
+
+sub _auth {
+  my $self = shift;
+
+  my $now = DateTime->now;
+  $now->set_time_zone('UTC');
+  md5_hex($self->{vendor_code} .
+    $self->{password} .
+    $now->strftime('%Y%m%d')
+  );
+}
+
+# internal method: dispatch a request to the service
+
+sub _call {
+  my $self = shift;
+  $self->{client}->call(@_);
+}
+
+=item AddorUpdateCustomer OPTIONS
+
+Adds or updates a customer.  Note the idiosyncratic capitalization; this
+is the spelling of the underlying API method.  OPTIONS may include:
+
+- PHONE_NUMBER: 10 digits, no punctuation
+- FIRST_NAME: customer first name, up to 38 characters
+- LAST_NAME: customer last name or company name, up to 100 characters
+- STREET_NUMBER: up to 10 characters
+- STREET_NAME: up to 84 characters
+- CITY: up to 38 characters
+- PROVINCE_STATE: 2 letter code
+- POSTAL_CODE_ZIP: Canadian postal code or U.S. zip code
+- OTHER_ADDRESS_INFO: up to 250 characters
+
+Returns a L<WebService::Northern911::Result> object.
+
+=cut
+
+sub AddorUpdateCustomer {
+  my $self = shift;
+  my %opt = @_;
+  my %customer = map { $_ => $opt{$_} }
+  qw( PHONE_NUMBER FIRST_NAME LAST_NAME STREET_NUMBER STREET_NAME
+      CITY PROVINCE_STATE POSTAL_CODE_ZIP OTHER_ADDRESS_INFO 
+    );
+  # according to Northern 911 support, this is for a future feature,
+  # and should always be 'N' for now
+  $customer{ENHANCED_CAPABLE} = 'N';
+
+  $customer{VENDOR_CODE} = $self->{vendor_code};
+
+  my ($answer, $trace) = $self->_call( 'AddorUpdateCustomer',
+    hash => $self->_auth,
+    customer => \%customer,
+  );
+
+  WebService::Northern911::Response->new($answer);
+}
+
+=item DeleteCustomer PHONE
+
+Deletes a customer record.  PHONE must be the phone number (10 digits,
+as in C<AddorUpdateCustomer>).
+
+=cut
+
+sub DeleteCustomer {
+  my $self = shift;
+  my $phone = shift;
+
+  my ($answer, $trace) = $self->_call( 'DeleteCustomer',
+    vendorCode => $self->{vendor_code},
+    hash => $self->_auth,
+    phoneNumber => $phone,
+  );
+
+  WebService::Northern911::Response->new($answer);
+}
+
+=item QueryCustomer PHONE
+
+Queries a customer record.  PHONE must be the phone number.  The response
+object will have a "customer" method which returns a hashref of customer
+information, in the same format as the arguments to C<AddorUpdateCustomer>.
+
+=cut
+
+sub QueryCustomer {
+  my $self = shift;
+  my $phone = shift;
+
+  my ($answer, $trace) = $self->_call( 'QueryCustomer',
+    vendorCode => $self->{vendor_code},
+    hash => $self->_auth,
+    phoneNumber => $phone,
+  );
+
+  WebService::Northern911::Response->new($answer);
+}
+
+=item GetVendorDumpURL
+
+Returns a URL to download a CSV dump of your customer data.  The response
+object will have a 'url' method to return the URL.
+
+Note that this feature is heavily throttled (at most once per week, unless
+you pay for more frequent access) and the URL can only be used once.
+
+=cut
+
+sub GetVendorDumpURL {
+  my $self = shift;
+
+  my ($answer, $trace) = $self->_call( 'GetVendorDumpURL',
+    vendorCode => $self->{vendor_code},
+    hash => $self->_auth,
+  );
+
+  WebService::Northern911::Response->new($answer);
+}
+
+=back
+
+=head1 AUTHOR
+
+Mark Wells, <mark@freeside.biz>
+
+Commercial support is available from Freeside Internet Services, Inc.
+
+=head1 COPYRIGHT
+
+Copyright (c) 2014 Mark Wells
+
+=cut
+
+1;
diff --git a/lib/WebService/Northern911/Response.pm b/lib/WebService/Northern911/Response.pm
new file mode 100644 (file)
index 0000000..f21eab1
--- /dev/null
@@ -0,0 +1,88 @@
+package WebService::Northern911::Response;
+
+use strict;
+
+sub new {
+  my $class = shift;
+  my $self;
+
+  my $tree = shift;
+  $tree = $tree->{'parameters'} if exists $tree->{'parameters'};
+  my ($key) = grep /Result$/, keys(%$tree); # should only ever be one key
+  $tree = $tree->{$key} or die "can't parse transaction result";
+
+  my $error_message = join("\n",
+    map { $_->{ErrorMessage} }
+    @{ $tree->{Errors}{Error} }
+  );
+
+  $self = {
+    is_success    => $tree->{Accepted},
+    error_message => $error_message,
+  };
+
+  if ( $key eq 'QueryCustomerResult' ) {
+    if ($tree->{Accepted}) {
+      $self->{customer} = $tree->{Customer};
+    } elsif ( $tree->{Errors}{Error}[0]{ErrorCode} == 101 ) {
+      # 101 = Customer does not exist.  But the query was successful...
+      $self->{is_success} = 1;
+    }
+  } elsif ( $key eq 'GetVendorDumpURL' ) {
+    $self->{url} = $tree->{VendorDumpURL};
+  }
+
+  bless $self, $class;
+}
+
+sub is_success {
+  $_[0]->{is_success};
+}
+
+sub error_message {
+  $_[0]->{error_message};
+}
+
+sub customer {
+  $_[0]->{customer};
+}
+
+sub url {
+  $_[0]->{url};
+}
+
+=head1 NAME
+
+WebService::Northern911::Response - Response object returned by
+WebService::Northern911 API calls
+
+=head1 METHODS
+
+=over 4
+
+=item is_success
+
+1 if the API method was a success, 0 if not.  If it's 0, C<error_message>
+will contain any error returned.  Note that we report the C<QueryCustomer>
+method as a success if it returns a negative result; in that case, 
+C<customer> will be undef.
+
+=item error_message
+
+Any error messages returned from the web service, separated by newlines.
+
+=item customer
+
+For C<QueryCustomer> calls, returns a hashref of the customer information
+per the field names used by C<AddorUpdateCustomer>.
+
+=item url
+
+For C<GetVendorDumpURL> calls, returns the URL where the data dump can be
+downloaded.
+
+=back
+
+=cut
+
+1;
diff --git a/share/schema/live/wsdl b/share/schema/live/wsdl
new file mode 100644 (file)
index 0000000..ff805d7
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="Service" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"><wsp:Policy wsu:Id="BasicHttpBinding_IService_policy"><wsp:ExactlyOne><wsp:All><sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy><sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout></wsp:Policy></sp:TransportBinding></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/></xsd:schema></wsdl:types><wsdl:message name="IService_AddorUpdateCustomer_InputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomer"/></wsdl:message><wsdl:message name="IService_AddorUpdateCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomerResponse"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_InputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomer"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomerResponse"/></wsdl:message><wsdl:message name="IService_QueryCustomer_InputMessage"><wsdl:part name="parameters" element="tns:QueryCustomer"/></wsdl:message><wsdl:message name="IService_QueryCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:QueryCustomerResponse"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_InputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURL"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_OutputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURLResponse"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_InputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomer"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomerResponse"/></wsdl:message><wsdl:portType name="IService"><wsdl:operation name="AddorUpdateCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomer" message="tns:IService_AddorUpdateCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomerResponse" message="tns:IService_AddorUpdateCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="DeleteCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/DeleteCustomer" message="tns:IService_DeleteCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/DeleteCustomerResponse" message="tns:IService_DeleteCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="QueryCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/QueryCustomer" message="tns:IService_QueryCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/QueryCustomerResponse" message="tns:IService_QueryCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><wsdl:input wsaw:Action="http://tempuri.org/IService/GetVendorDumpURL" message="tns:IService_GetVendorDumpURL_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/GetVendorDumpURLResponse" message="tns:IService_GetVendorDumpURL_OutputMessage"/></wsdl:operation><wsdl:operation name="VerifyCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/VerifyCustomer" message="tns:IService_VerifyCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/VerifyCustomerResponse" message="tns:IService_VerifyCustomer_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IService" type="tns:IService"><wsp:PolicyReference URI="#BasicHttpBinding_IService_policy"/><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="AddorUpdateCustomer"><soap:operation soapAction="http://tempuri.org/IService/AddorUpdateCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="DeleteCustomer"><soap:operation soapAction="http://tempuri.org/IService/DeleteCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="QueryCustomer"><soap:operation soapAction="http://tempuri.org/IService/QueryCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><soap:operation soapAction="http://tempuri.org/IService/GetVendorDumpURL" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="VerifyCustomer"><soap:operation soapAction="http://tempuri.org/IService/VerifyCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Service"><wsdl:port name="BasicHttpBinding_IService" binding="tns:BasicHttpBinding_IService"><soap:address location="https://addressinfo.northern911.com/soap/Service.svc"/></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
diff --git a/share/schema/live/xsd0 b/share/schema/live/xsd0
new file mode 100644 (file)
index 0000000..c30e001
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"><xs:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/><xs:element name="AddorUpdateCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q1:Customer" xmlns:q1="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddorUpdateCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="AddorUpdateCustomerResult" nillable="true" type="q2:N911Response" xmlns:q2="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="DeleteCustomerResult" nillable="true" type="q3:N911Response" xmlns:q3="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="QueryCustomerResult" nillable="true" type="q4:N911Response" xmlns:q4="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURL"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURLResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetVendorDumpURLResult" nillable="true" type="q5:N911Response" xmlns:q5="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q6:Customer" xmlns:q6="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="VerifyCustomerResult" nillable="true" type="q7:N911Response" xmlns:q7="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element></xs:schema>
\ No newline at end of file
diff --git a/share/schema/live/xsd1 b/share/schema/live/xsd1
new file mode 100644 (file)
index 0000000..5c1344c
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema>
\ No newline at end of file
diff --git a/share/schema/live/xsd2 b/share/schema/live/xsd2
new file mode 100644 (file)
index 0000000..7c83a0e
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/"><xs:complexType name="Customer"><xs:sequence><xs:element minOccurs="0" name="CITY" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ENHANCED_CAPABLE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="FIRST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED_UNIXTIME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="OTHER_ADDRESS_INFO" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PHONE_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="POSTAL_CODE_ZIP" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PROVINCE_STATE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SUITE_APT" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="VENDOR_CODE" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Customer" nillable="true" type="tns:Customer"/><xs:complexType name="N911Response"><xs:sequence><xs:element minOccurs="0" name="Accepted" type="xs:boolean"/><xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer"/><xs:element minOccurs="0" name="Errors" nillable="true" type="tns:ArrayOfError"/><xs:element minOccurs="0" name="VendorDumpURL" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="N911Response" nillable="true" type="tns:N911Response"/><xs:complexType name="ArrayOfError"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error"/></xs:sequence></xs:complexType><xs:element name="ArrayOfError" nillable="true" type="tns:ArrayOfError"/><xs:complexType name="Error"><xs:sequence><xs:element minOccurs="0" name="ErrorCode" type="xs:int"/><xs:element minOccurs="0" name="ErrorMessage" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedCity" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedProvinceState" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Error" nillable="true" type="tns:Error"/></xs:schema>
\ No newline at end of file
diff --git a/share/schema/test/wsdl b/share/schema/test/wsdl
new file mode 100644 (file)
index 0000000..c5ba956
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="Service" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"><wsp:Policy wsu:Id="BasicHttpBinding_IService_policy"><wsp:ExactlyOne><wsp:All><sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy><sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout></wsp:Policy></sp:TransportBinding></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/></xsd:schema></wsdl:types><wsdl:message name="IService_AddorUpdateCustomer_InputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomer"/></wsdl:message><wsdl:message name="IService_AddorUpdateCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomerResponse"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_InputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomer"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomerResponse"/></wsdl:message><wsdl:message name="IService_QueryCustomer_InputMessage"><wsdl:part name="parameters" element="tns:QueryCustomer"/></wsdl:message><wsdl:message name="IService_QueryCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:QueryCustomerResponse"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_InputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURL"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_OutputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURLResponse"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_InputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomer"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomerResponse"/></wsdl:message><wsdl:portType name="IService"><wsdl:operation name="AddorUpdateCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomer" message="tns:IService_AddorUpdateCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomerResponse" message="tns:IService_AddorUpdateCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="DeleteCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/DeleteCustomer" message="tns:IService_DeleteCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/DeleteCustomerResponse" message="tns:IService_DeleteCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="QueryCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/QueryCustomer" message="tns:IService_QueryCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/QueryCustomerResponse" message="tns:IService_QueryCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><wsdl:input wsaw:Action="http://tempuri.org/IService/GetVendorDumpURL" message="tns:IService_GetVendorDumpURL_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/GetVendorDumpURLResponse" message="tns:IService_GetVendorDumpURL_OutputMessage"/></wsdl:operation><wsdl:operation name="VerifyCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/VerifyCustomer" message="tns:IService_VerifyCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/VerifyCustomerResponse" message="tns:IService_VerifyCustomer_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IService" type="tns:IService"><wsp:PolicyReference URI="#BasicHttpBinding_IService_policy"/><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="AddorUpdateCustomer"><soap:operation soapAction="http://tempuri.org/IService/AddorUpdateCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="DeleteCustomer"><soap:operation soapAction="http://tempuri.org/IService/DeleteCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="QueryCustomer"><soap:operation soapAction="http://tempuri.org/IService/QueryCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><soap:operation soapAction="http://tempuri.org/IService/GetVendorDumpURL" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="VerifyCustomer"><soap:operation soapAction="http://tempuri.org/IService/VerifyCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Service"><wsdl:port name="BasicHttpBinding_IService" binding="tns:BasicHttpBinding_IService"><soap:address location="https://soapdev.northern911.com/soap/Service.svc"/></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
diff --git a/share/schema/test/xsd0 b/share/schema/test/xsd0
new file mode 100644 (file)
index 0000000..be55868
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"><xs:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/><xs:element name="AddorUpdateCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q1:Customer" xmlns:q1="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddorUpdateCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="AddorUpdateCustomerResult" nillable="true" type="q2:N911Response" xmlns:q2="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="DeleteCustomerResult" nillable="true" type="q3:N911Response" xmlns:q3="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="QueryCustomerResult" nillable="true" type="q4:N911Response" xmlns:q4="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURL"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURLResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetVendorDumpURLResult" nillable="true" type="q5:N911Response" xmlns:q5="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q6:Customer" xmlns:q6="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="VerifyCustomerResult" nillable="true" type="q7:N911Response" xmlns:q7="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element></xs:schema>
\ No newline at end of file
diff --git a/share/schema/test/xsd1 b/share/schema/test/xsd1
new file mode 100644 (file)
index 0000000..5c1344c
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema>
\ No newline at end of file
diff --git a/share/schema/test/xsd2 b/share/schema/test/xsd2
new file mode 100644 (file)
index 0000000..7c83a0e
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/"><xs:complexType name="Customer"><xs:sequence><xs:element minOccurs="0" name="CITY" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ENHANCED_CAPABLE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="FIRST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED_UNIXTIME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="OTHER_ADDRESS_INFO" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PHONE_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="POSTAL_CODE_ZIP" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PROVINCE_STATE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SUITE_APT" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="VENDOR_CODE" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Customer" nillable="true" type="tns:Customer"/><xs:complexType name="N911Response"><xs:sequence><xs:element minOccurs="0" name="Accepted" type="xs:boolean"/><xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer"/><xs:element minOccurs="0" name="Errors" nillable="true" type="tns:ArrayOfError"/><xs:element minOccurs="0" name="VendorDumpURL" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="N911Response" nillable="true" type="tns:N911Response"/><xs:complexType name="ArrayOfError"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error"/></xs:sequence></xs:complexType><xs:element name="ArrayOfError" nillable="true" type="tns:ArrayOfError"/><xs:complexType name="Error"><xs:sequence><xs:element minOccurs="0" name="ErrorCode" type="xs:int"/><xs:element minOccurs="0" name="ErrorMessage" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedCity" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedProvinceState" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Error" nillable="true" type="tns:Error"/></xs:schema>
\ No newline at end of file
diff --git a/t/00-load.t b/t/00-load.t
new file mode 100644 (file)
index 0000000..adcfbef
--- /dev/null
@@ -0,0 +1,13 @@
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+plan tests => 1;
+
+BEGIN {
+    use_ok( 'WebService::Northern911' ) || print "Bail out!\n";
+}
+
+diag( "Testing WebService::Northern911 $WebService::Northern911::VERSION, Perl $], $^X" );
diff --git a/t/manifest.t b/t/manifest.t
new file mode 100644 (file)
index 0000000..6ddfe36
--- /dev/null
@@ -0,0 +1,15 @@
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+unless ( $ENV{RELEASE_TESTING} ) {
+    plan( skip_all => "Author tests not required for installation" );
+}
+
+my $min_tcm = 0.9;
+eval "use Test::CheckManifest $min_tcm";
+plan skip_all => "Test::CheckManifest $min_tcm required" if $@;
+
+ok_manifest();
diff --git a/t/pod.t b/t/pod.t
new file mode 100644 (file)
index 0000000..a0054e9
--- /dev/null
+++ b/t/pod.t
@@ -0,0 +1,12 @@
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+# Ensure a recent version of Test::Pod
+my $min_tp = 1.22;
+eval "use Test::Pod $min_tp";
+plan skip_all => "Test::Pod $min_tp required for testing POD" if $@;
+
+all_pod_files_ok();