shipwire 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/shipwire.rb +1 -0
- data/lib/shipwire/tracking.rb +95 -1
- data/lib/shipwire/version.rb +1 -1
- data/spec/shipwire/tracking_spec.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b2e9a19395e20f5db8003f76778a19dd8022a22
|
4
|
+
data.tar.gz: df3e6c1d47fc3a606715b4e50c994cf8c6f3e481
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e79ba519e270d8d70531afb0f8ad3523ef98160c1383c4cdb667d409752ca511ac37161c7ca5829533d6aef9d851f714dff0fed68d3a6133145c594a4f8e0f0
|
7
|
+
data.tar.gz: 9251cbc6a8be1fb0cd786409790bb1c5822491f17202cc173eaec76a0df13e8e9b32a0d1193c72d7689352c60fee4379ceeef9ff8ddaefac8eede5ad451dd853
|
data/Gemfile.lock
CHANGED
data/lib/shipwire.rb
CHANGED
data/lib/shipwire/tracking.rb
CHANGED
@@ -1,7 +1,101 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
|
3
3
|
module Shipwire
|
4
|
-
class Tracking
|
4
|
+
class Tracking < Shipwire::ServiceRequest
|
5
|
+
attr_reader :order_responses
|
6
|
+
|
5
7
|
API_PATH = 'TrackingServices.php'
|
8
|
+
|
9
|
+
def initialize(params={})
|
10
|
+
super
|
11
|
+
|
12
|
+
@order_responses = []
|
13
|
+
@api_path = Tracking::API_PATH
|
14
|
+
|
15
|
+
@bookmark = params[:bookmark]
|
16
|
+
if @bookmark == '1'
|
17
|
+
raise Shipwire::TrackingError.new('Ability to return all orders has been deprecated')
|
18
|
+
end
|
19
|
+
|
20
|
+
@order_number = params[:order_number]
|
21
|
+
@shipwire_id = params[:shipwire_id]
|
22
|
+
|
23
|
+
# Default to since last bookmark
|
24
|
+
if (@bookmark == nil || @bookmark == '') &&
|
25
|
+
(@order_number == nil || @order_number == '') &&
|
26
|
+
(@shipwire_id == nil || @shipwire_id == '')
|
27
|
+
@bookmark = '2'
|
28
|
+
end
|
29
|
+
|
30
|
+
self.build_payload
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse_response
|
34
|
+
if @response != nil
|
35
|
+
xml = Nokogiri::XML(@response.body)
|
36
|
+
tracking_update_response = xml.xpath('//TrackingUpdateResponse')
|
37
|
+
|
38
|
+
if tracking_update_response != nil
|
39
|
+
if is_ok?(tracking_update_response)
|
40
|
+
|
41
|
+
orders = tracking_update_response.xpath('//Order')
|
42
|
+
|
43
|
+
orders.each do |order|
|
44
|
+
tracking_numbers = order.xpath('TrackingNumber')
|
45
|
+
|
46
|
+
tracking_data = []
|
47
|
+
tracking_numbers.each do |number|
|
48
|
+
tracking_data << {
|
49
|
+
carrier: number.attributes['carrier'],
|
50
|
+
tracking_link: number.attributes['href'],
|
51
|
+
tracking_number: number.text
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
@order_responses << {
|
56
|
+
order_number: order.attributes['id'].value,
|
57
|
+
shipped: order.attributes['shipped'].value,
|
58
|
+
ship_date: (order.attributes['shipDate'] != nil ? order.attributes['shipDate'].value : ''),
|
59
|
+
delivered: (order.attributes['delivered'] != nil ? order.attributes['delivered'].value : ''),
|
60
|
+
expected_delivery_date: (order.attributes['expectedDeliveryDate'] != nil ? order.attributes['expectedDeliveryDate'].value : ''),
|
61
|
+
fulfillment_data: {
|
62
|
+
handling: (order.attributes['handling'] != nil ? order.attributes['handling'].value : '0'),
|
63
|
+
shipping: (order.attributes['shipping'] != nil ? order.attributes['shipping'].value : '0'),
|
64
|
+
packaging: (order.attributes['packaging'] != nil ? order.attributes['packaging'].value : '0')
|
65
|
+
},
|
66
|
+
tracking_numbers: tracking_data
|
67
|
+
}
|
68
|
+
end
|
69
|
+
else
|
70
|
+
@errors << 'Unsuccessful request'
|
71
|
+
end
|
72
|
+
else
|
73
|
+
@errors << 'Unsuccessful request'
|
74
|
+
end
|
75
|
+
else
|
76
|
+
@errors << 'Unsuccessful request'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
protected
|
81
|
+
def build_payload
|
82
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
83
|
+
xml.TrackingUpdate {
|
84
|
+
xml.Username Shipwire.username
|
85
|
+
xml.Password Shipwire.password
|
86
|
+
xml.Server Shipwire.server
|
87
|
+
|
88
|
+
if @bookmark != '' && @bookmark != nil
|
89
|
+
xml.Bookmark @bookmark
|
90
|
+
elsif @shipwire_id != '' && @shipwire_id != nil
|
91
|
+
xml.ShipwireId @shipwire_id
|
92
|
+
else
|
93
|
+
xml.OrderNo @order_number
|
94
|
+
end
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
98
|
+
self.payload = builder.to_xml
|
99
|
+
end
|
6
100
|
end
|
7
101
|
end
|
data/lib/shipwire/version.rb
CHANGED
@@ -2,4 +2,19 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Shipwire::Tracking, vcr: true do
|
4
4
|
let(:configuration) { Shipwire.configuration }
|
5
|
+
|
6
|
+
it 'should raise error if bookmark set to 1' do
|
7
|
+
expect { Shipwire::Tracking.new({ bookmark: '1' }) }.to raise_error(Shipwire::TrackingError)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should get back some tracking responses' do
|
11
|
+
tracking = Shipwire::Tracking.new({
|
12
|
+
bookmark: '2'
|
13
|
+
})
|
14
|
+
|
15
|
+
tracking.send
|
16
|
+
tracking.parse_response
|
17
|
+
|
18
|
+
expect(tracking.order_responses.length).to be > 0
|
19
|
+
end
|
5
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipwire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill Rowell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|