shipwire 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8aab9009a262f57e4b33e9289fbcd72799e0bf89
4
- data.tar.gz: 0eb2542713cfd7a73b494d2b2c4377f5c97968eb
3
+ metadata.gz: 0b2e9a19395e20f5db8003f76778a19dd8022a22
4
+ data.tar.gz: df3e6c1d47fc3a606715b4e50c994cf8c6f3e481
5
5
  SHA512:
6
- metadata.gz: 7f26396f851cb2dbe6e221f86dd892e83b36f1ffcb8b1a8451495a9034f231c51f6c47ffdef4aa1dac91280d058d3171a1c44737adae0a29ec8ad23b0dd4649b
7
- data.tar.gz: 3e41bd6e6b86075b501d030f016b5c4a137251c6d1f68e2f63573403ae7eb90f5ee0e2b51a77d83ed268d7b9191dca45810f6da13dcc52d43e0fe84e517a6a64
6
+ metadata.gz: 9e79ba519e270d8d70531afb0f8ad3523ef98160c1383c4cdb667d409752ca511ac37161c7ca5829533d6aef9d851f714dff0fed68d3a6133145c594a4f8e0f0
7
+ data.tar.gz: 9251cbc6a8be1fb0cd786409790bb1c5822491f17202cc173eaec76a0df13e8e9b32a0d1193c72d7689352c60fee4379ceeef9ff8ddaefac8eede5ad451dd853
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shipwire (0.0.2)
4
+ shipwire (0.0.3)
5
5
  faraday
6
6
  nokogiri
7
7
 
@@ -43,4 +43,5 @@ module Shipwire
43
43
  class ApiServerNotSet < Error; end
44
44
  class ServerErrorEncountered < Error; end
45
45
  class AccessDenied < Error; end
46
+ class TrackingError < Error; end
46
47
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Shipwire
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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.2
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-12 00:00:00.000000000 Z
11
+ date: 2014-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday