File Coverage

blib/lib/WWW/ShipStation.pm
Criterion Covered Total %
statement 21 209 10.0
branch 0 80 0.0
condition 0 18 0.0
subroutine 7 28 25.0
pod 18 18 100.0
total 46 353 13.0


line stmt bran cond sub pod time code
1             package WWW::ShipStation;
2              
3 1     1   56055 use strict;
  1         3  
  1         43  
4 1     1   32 use 5.008_005;
  1         3  
  1         48  
5             our $VERSION = '0.04';
6              
7 1     1   1324 use LWP::UserAgent;
  1         123799  
  1         46  
8 1     1   1386 use JSON;
  1         47280  
  1         7  
9 1     1   210 use Carp 'croak';
  1         2  
  1         265  
10 1     1   8 use URI::Escape qw/uri_escape/;
  1         3  
  1         332  
11 1     1   6 use HTTP::Request;
  1         3  
  1         5689  
12              
13             sub new {
14 0     0 1   my $class = shift;
15 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
16              
17 0 0         $args{user} or croak "user is required.";
18 0 0         $args{pass} or croak "pass is required.";
19              
20 0   0       $args{ua} ||= LWP::UserAgent->new();
21 0   0       $args{json} ||= JSON->new->allow_nonref->utf8;
22              
23 0   0       $args{API_BASE} ||= 'https://data.shipstation.com/1.3/';
24              
25 0           bless \%args, $class;
26             }
27              
28             sub getCarriers {
29 0     0 1   (shift)->request('Carriers');
30             }
31              
32             sub getCustomsItems {
33 0     0 1   my $self = shift;
34 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
35              
36 0           my $url = 'CustomsItems()';
37 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
38 0           $self->request($url, %params);
39             }
40              
41             sub getCustomers {
42 0     0 1   my $self = shift;
43 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
44              
45 0           my $url = 'Customers()';
46 0 0         if ($args{customerID}) {
47 0           $url = "Customers($args{customerID})"
48             }
49 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
50 0           $self->request($url, %params);
51             }
52              
53             sub getMarketplaces {
54 0     0 1   (shift)->request('Marketplaces');
55             }
56              
57             sub getOrderItems {
58 0     0 1   my $self = shift;
59 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
60              
61 0           my $url = 'OrderItems()';
62 0 0         if ($args{orderID}) {
63 0           $url = "OrderItems($args{orderID})"
64             }
65 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
66 0           $self->request($url, %params);
67             }
68              
69             sub getOrders {
70 0     0 1   my $self = shift;
71 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
72              
73 0           my $url = 'Orders()';
74 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
75 0           $self->request($url, %params);
76             }
77              
78             sub getPackageTypes {
79 0     0 1   my $self = shift;
80 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
81              
82 0           my $url = 'PackageTypes()';
83 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
84 0           $self->request($url, %params);
85             }
86              
87             sub getProducts {
88 0     0 1   my $self = shift;
89 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
90              
91 0           my $url = 'Products()';
92 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
93 0           $self->request($url, %params);
94             }
95              
96             sub getShipments {
97 0     0 1   my $self = shift;
98 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
99              
100 0           my $url = 'Shipments()';
101 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
102 0           $self->request($url, %params);
103             }
104              
105             sub getShippingProviders {
106 0     0 1   (shift)->request('ShippingProviders');
107             }
108              
109             sub getShippingServices {
110 0     0 1   my $self = shift;
111 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
112              
113 0           my $url = 'ShippingServices()';
114 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
115 0           $self->request($url, %params);
116             }
117              
118             sub getStores {
119 0     0 1   my $self = shift;
120 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
121              
122 0           my $url = 'Stores()';
123 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
124 0           $self->request($url, %params);
125             }
126              
127             sub getWarehouses {
128 0     0 1   my $self = shift;
129 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
130              
131 0           my $url = 'Warehouses()';
132 0           my %params = map { '$' . $_ => $args{$_} } keys %args;
  0            
133 0           $self->request($url, %params);
134             }
135              
136             sub request {
137 0     0 1   my ($self, $url, %params) = @_;
138              
139 0 0 0       if (%params and keys %params) {
140 0           $url .= '?' . join('&', map { join('=', $_, uri_escape($params{$_})) } keys %params);
  0            
141             }
142              
143 0           my $req = HTTP::Request->new(GET => $self->{API_BASE} . $url);
144 0           $req->authorization_basic($self->{user}, $self->{pass});
145 0           $req->header('Accept', 'application/json'); # JSON is better
146 0           my $res = $self->{ua}->request($req);
147             # use Data::Dumper; print STDERR Dumper(\$res);
148 0 0         if ($res->header('Content-Type') =~ m{application/json}) {
149 0           return $self->{json}->decode($res->decoded_content);
150             }
151 0 0         unless ($res->is_success) {
152             return {
153 0           'error' => {
154             'code' => '',
155             'message' => {
156             'lang' => 'en-US',
157             'value' => $res->status_line,
158             }
159             }
160             };
161             }
162             }
163              
164             sub __now {
165 0     0     my @d = localtime();
166 0           return sprintf('%04d-%02d-%02dT%02d:%02d:%02d', $d[5] + 1900, $d[4] + 1, $d[3], $d[2], $d[1]);
167             }
168              
169             sub createOrder {
170 0     0 1   my $self = shift;
171              
172 0 0         my %args = @_ % 2 ? %{$_[0]} : @_;
  0            
173              
174 0           my $__now = __now();
175 0           my $content = <
176            
177            
178            
179             </td> </tr> <tr> <td class="h" > <a name="180">180</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <author> </td> </tr> <tr> <td class="h" > <a name="181">181</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <name /> </td> </tr> <tr> <td class="h" > <a name="182">182</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </author> </td> </tr> <tr> <td class="h" > <a name="183">183</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <updated>$__now.1022961Z</updated> </td> </tr> <tr> <td class="h" > <a name="184">184</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <id /> </td> </tr> <tr> <td class="h" > <a name="185">185</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <content type="application/xml"> </td> </tr> <tr> <td class="h" > <a name="186">186</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <m:properties> </td> </tr> <tr> <td class="h" > <a name="187">187</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML </td> </tr> <tr> <td class="h" > <a name="188">188</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="189">189</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # bool </td> </tr> <tr> <td class="h" > <a name="190">190</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('Active', 'AdditionalHandling', 'Gift', 'NonMachinable', 'SaturdayDelivery', 'ShowPostage') { </td> </tr> <tr> <td class="h" > <a name="191">191</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#191-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($args{$x}) { </td> </tr> <tr> <td class="h" > <a name="192">192</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Boolean">true</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="193">193</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="194">194</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Boolean">false</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="195">195</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="196">196</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="197">197</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="198">198</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # byte </td> </tr> <tr> <td class="h" > <a name="199">199</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('AddressVerified', 'Confirmation', 'InsuranceProvider') { </td> </tr> <tr> <td class="h" > <a name="200">200</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#200-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $v = $args{$x} ? 1 : 0; </td> </tr> <tr> <td class="h" > <a name="201">201</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Byte">$v</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="202">202</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="203">203</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="204">204</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # decimal </td> </tr> <tr> <td class="h" > <a name="205">205</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('AmountPaid', 'ConfirmationCost', 'Height', 'Length', 'Width', 'InsuranceCost', 'InsuredValue', 'OrderTotal', 'OtherCost', 'ShippingAmount') { </td> </tr> <tr> <td class="h" > <a name="206">206</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#206-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="207">207</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $v = sprintf('%.2f', $args{$x}); </td> </tr> <tr> <td class="h" > <a name="208">208</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Decimal">$v</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="209">209</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="210">210</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Decimal" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="211">211</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="212">212</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="213">213</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="214">214</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # int32 </td> </tr> <tr> <td class="h" > <a name="215">215</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('CustomerID', 'EmailTemplateID', 'PackageTypeID', 'PackingSlipID', 'MarketplaceID', 'OrderID', 'OrderStatusID', 'ProviderID', 'RequestedServiceID', 'SellerID', 'ServiceID', 'StoreID', 'WarehouseID', 'WeightOz') { </td> </tr> <tr> <td class="h" > <a name="216">216</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#216-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--condition.html#216-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args{$x} ||= 0 if $x eq 'OrderID'; </td> </tr> <tr> <td class="h" > <a name="217">217</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#217-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="218">218</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Int32">$args{$x}</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="219">219</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="220">220</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Int32" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="221">221</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="222">222</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="223">223</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="224">224</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # DateTime </td> </tr> <tr> <td class="h" > <a name="225">225</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('ImportBatch') { </td> </tr> <tr> <td class="h" > <a name="226">226</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#226-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="227">227</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Guid">$args{$x}</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="228">228</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="229">229</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Guid" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="230">230</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="231">231</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="232">232</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="233">233</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # DateTime </td> </tr> <tr> <td class="h" > <a name="234">234</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('CreateDate', 'HoldUntil', 'ModifyDate', 'OrderDate', 'PayDate', 'ShipDate') { </td> </tr> <tr> <td class="h" > <a name="235">235</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#235-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="236">236</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.DateTime">$args{$x}</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="237">237</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="238">238</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.DateTime" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="239">239</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="240">240</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="241">241</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="242">242</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('BuyerEmail', 'ExternalPaymentID', 'ExternalUrl', 'ImportKey', 'NonDelivery', 'CustomsContents', 'NotesFromBuyer', 'NotesToBuyer', 'InternalNotes', 'OrderNumber', 'RateError', 'RequestedShippingService', 'ResidentialIndicator', 'ShipCity', 'ShipCompany', 'ShipCountryCode', 'ShipName', 'ShipPhone', 'ShipPostalCode', 'ShipState', 'ShipStreet1', 'ShipStreet2', 'ShipStreet3', 'Username') { </td> </tr> <tr> <td class="h" > <a name="243">243</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#243-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="244">244</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x>~ . __simple_escape($args{$x}) . qq~</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="245">245</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="246">246</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="247">247</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="248">248</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="249">249</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="250">250</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= <<'XML'; </td> </tr> <tr> <td class="h" > <a name="251">251</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </m:properties> </td> </tr> <tr> <td class="h" > <a name="252">252</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </content> </td> </tr> <tr> <td class="h" > <a name="253">253</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </entry> </td> </tr> <tr> <td class="h" > <a name="254">254</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML </td> </tr> <tr> <td class="h" > <a name="255">255</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="256">256</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->__request('POST', 'https://data.shipstation.com/1.2/Orders', $content); </td> </tr> <tr> <td class="h" > <a name="257">257</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="258">258</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="259">259</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub __simple_escape { </td> </tr> <tr> <td class="h" > <a name="260">260</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#260-1"> 0 </a> </td> <td >   </td> <td >   </td> <td class="s"> my $str = shift; </td> </tr> <tr> <td class="h" > <a name="261">261</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $str =~ s/\&/\&/g; </td> </tr> <tr> <td class="h" > <a name="262">262</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $str =~ s/\</\</g; </td> </tr> <tr> <td class="h" > <a name="263">263</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $str =~ s/\>/\>/g; </td> </tr> <tr> <td class="h" > <a name="264">264</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $str; </td> </tr> <tr> <td class="h" > <a name="265">265</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="266">266</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="267">267</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub deleteOrder { </td> </tr> <tr> <td class="h" > <a name="268">268</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#268-1"> 0 </a> </td> <td class="c3" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#268-1"> 1 </a> </td> <td >   </td> <td class="s"> my ($self, $orderID) = @_; </td> </tr> <tr> <td class="h" > <a name="269">269</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="270">270</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->__request('DELETE', "http://data.shipstation.com/1.2/Orders($orderID)"); </td> </tr> <tr> <td class="h" > <a name="271">271</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="272">272</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="273">273</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub createOrderItem { </td> </tr> <tr> <td class="h" > <a name="274">274</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#274-1"> 0 </a> </td> <td class="c3" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#274-1"> 1 </a> </td> <td >   </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="275">275</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="276">276</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#276-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my %args = @_ % 2 ? %{$_[0]} : @_; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="277">277</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="278">278</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $__now = __now(); </td> </tr> <tr> <td class="h" > <a name="279">279</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $content = <<XML; </td> </tr> <tr> <td class="h" > <a name="280">280</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8" standalone="yes"?> </td> </tr> <tr> <td class="h" > <a name="281">281</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> </td> </tr> <tr> <td class="h" > <a name="282">282</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <category scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="SS.WebData.OrderItem" /> </td> </tr> <tr> <td class="h" > <a name="283">283</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <title /> </td> </tr> <tr> <td class="h" > <a name="284">284</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <author> </td> </tr> <tr> <td class="h" > <a name="285">285</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <name /> </td> </tr> <tr> <td class="h" > <a name="286">286</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </author> </td> </tr> <tr> <td class="h" > <a name="287">287</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <updated>$__now.6214402Z</updated> </td> </tr> <tr> <td class="h" > <a name="288">288</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <id /> </td> </tr> <tr> <td class="h" > <a name="289">289</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <content type="application/xml"> </td> </tr> <tr> <td class="h" > <a name="290">290</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <m:properties> </td> </tr> <tr> <td class="h" > <a name="291">291</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML </td> </tr> <tr> <td class="h" > <a name="292">292</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="293">293</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # bool </td> </tr> <tr> <td class="h" > <a name="294">294</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('Inactive') { </td> </tr> <tr> <td class="h" > <a name="295">295</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#295-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($args{$x}) { </td> </tr> <tr> <td class="h" > <a name="296">296</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Boolean">true</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="297">297</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="298">298</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Boolean">false</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="299">299</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="300">300</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="301">301</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="302">302</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # decimal </td> </tr> <tr> <td class="h" > <a name="303">303</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('ExtendedPrice', 'ShippingAmount', 'TaxAmount', 'WeightOz') { </td> </tr> <tr> <td class="h" > <a name="304">304</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#304-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="305">305</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $v = sprintf('%.2f', $args{$x}); </td> </tr> <tr> <td class="h" > <a name="306">306</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Decimal">$v</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="307">307</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="308">308</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Decimal" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="309">309</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="310">310</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="311">311</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="312">312</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # int32 </td> </tr> <tr> <td class="h" > <a name="313">313</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('OrderID', 'OrderItemID', 'ProductID', 'Quantity', 'UnitCost', 'UnitPrice') { </td> </tr> <tr> <td class="h" > <a name="314">314</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#314-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--condition.html#314-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args{$x} ||= 0 if $x eq 'OrderID' or $x eq 'OrderItemID'; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--condition.html#-2"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="315">315</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#315-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="316">316</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Int32">$args{$x}</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="317">317</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="318">318</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.Int32" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="319">319</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="320">320</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="321">321</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="322">322</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # DateTime </td> </tr> <tr> <td class="h" > <a name="323">323</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('CreateDate', 'ModifyDate') { </td> </tr> <tr> <td class="h" > <a name="324">324</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#324-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="325">325</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.DateTime">$args{$x}</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="326">326</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="327">327</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:type="Edm.DateTime" m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="328">328</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="329">329</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="330">330</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="331">331</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach my $x ('Description', 'ItemUrl', 'Options', 'SKU', 'ThumbnailUrl', 'UPC', 'WarehouseLocation') { </td> </tr> <tr> <td class="h" > <a name="332">332</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#332-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if (exists $args{$x}) { </td> </tr> <tr> <td class="h" > <a name="333">333</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x>~ . __simple_escape($args{$x}) . qq~</d:$x>\n~; </td> </tr> <tr> <td class="h" > <a name="334">334</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="335">335</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= qq~<d:$x m:null="true" />\n~; </td> </tr> <tr> <td class="h" > <a name="336">336</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="337">337</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="338">338</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="339">339</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $content .= <<'XML'; </td> </tr> <tr> <td class="h" > <a name="340">340</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </m:properties> </td> </tr> <tr> <td class="h" > <a name="341">341</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </content> </td> </tr> <tr> <td class="h" > <a name="342">342</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </entry> </td> </tr> <tr> <td class="h" > <a name="343">343</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML </td> </tr> <tr> <td class="h" > <a name="344">344</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="345">345</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->__request('POST', 'https://data.shipstation.com/1.2/OrderItems', $content); </td> </tr> <tr> <td class="h" > <a name="346">346</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="347">347</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="348">348</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub __request { </td> </tr> <tr> <td class="h" > <a name="349">349</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--subroutine.html#349-1"> 0 </a> </td> <td >   </td> <td >   </td> <td class="s"> my ($self, $method, $url, $content) = @_; </td> </tr> <tr> <td class="h" > <a name="350">350</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="351">351</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $req = HTTP::Request->new($method => $url); </td> </tr> <tr> <td class="h" > <a name="352">352</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $req->authorization_basic($self->{user}, $self->{pass}); </td> </tr> <tr> <td class="h" > <a name="353">353</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $req->header('Accept', 'application/json'); # JSON is better </td> </tr> <tr> <td class="h" > <a name="354">354</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $req->header('Accept-Charset' => 'UTF-8'); </td> </tr> <tr> <td class="h" > <a name="355">355</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#355-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($method eq 'POST') { </td> </tr> <tr> <td class="h" > <a name="356">356</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $req->header('Content-Type' => 'application/atom+xml'); </td> </tr> <tr> <td class="h" > <a name="357">357</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="358">358</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#358-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $req->content($content) if $content; </td> </tr> <tr> <td class="h" > <a name="359">359</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="360">360</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $res = $self->{ua}->request($req); </td> </tr> <tr> <td class="h" > <a name="361">361</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # use Data::Dumper; print STDERR Dumper(\$res); </td> </tr> <tr> <td class="h" > <a name="362">362</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#362-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($method eq 'DELETE') { </td> </tr> <tr> <td class="h" > <a name="363">363</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#363-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return $res->code == 204 ? 1 : 0; </td> </tr> <tr> <td class="h" > <a name="364">364</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="365">365</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#365-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($res->header('Content-Type') =~ m{application/json}) { </td> </tr> <tr> <td class="h" > <a name="366">366</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return $self->{json}->decode($res->decoded_content); </td> </tr> <tr> <td class="h" > <a name="367">367</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="368">368</a> </td> <td class="c0" > 0 </td> <td class="c0" > <a href="blib-lib-WWW-ShipStation-pm--branch.html#368-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless ($res->is_success) { </td> </tr> <tr> <td class="h" > <a name="369">369</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return { </td> </tr> <tr> <td class="h" > <a name="370">370</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'error' => { </td> </tr> <tr> <td class="h" > <a name="371">371</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'code' => '', </td> </tr> <tr> <td class="h" > <a name="372">372</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'message' => { </td> </tr> <tr> <td class="h" > <a name="373">373</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'lang' => 'en-US', </td> </tr> <tr> <td class="h" > <a name="374">374</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'value' => $res->status_line </td> </tr> <tr> <td class="h" > <a name="375">375</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="376">376</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="377">377</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="378">378</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="379">379</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return $res->decoded_content; </td> </tr> <tr> <td class="h" > <a name="380">380</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="381">381</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="382">382</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 1; </td> </tr> <tr> <td class="h" > <a name="383">383</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __END__ </td> </tr> </table> </body> </html>