shippo 1.0.3 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e21d3ec29ed56a00fd431e11a2fbef68a7da0e5
4
- data.tar.gz: fbb6171b9cd52c4c9f60309dc49a47d90333464b
3
+ metadata.gz: 3c1afc5735ee9f3e356aaa45c48461d337518999
4
+ data.tar.gz: 5780d7dac4a8884eded0dd5431ea30ca2fcdd222
5
5
  SHA512:
6
- metadata.gz: 43f4d4462aed8cdd311635af1c1a6bdb854937b12e8fbd391908dedb2737802c17c7a7f67222264621f1772862fecc22baeacb7c775f25b1569feb83c0f34928
7
- data.tar.gz: 1c198688269bb9c5c568828bf6e2b8d4e141f6020429bf5acbc0899c95aca1fe2e65450936a649b3fb996711d8fe80391ef13c276aff0747e20622621b368a11
6
+ metadata.gz: 8143b0403147d512fb677178f6cab943094238313cea9155ccc489329d1fea6e04c5844f48f9107cdc0500bee9bf50a256c479c1c151167316676229f2e8fdd0
7
+ data.tar.gz: 989b5c42d4d68739e539bf315f0f8992a5628f989c4181420a2b45134bcbe9508f2c70f1e25d5892222704fe62f7686fb601895f43b124fd8de9a04d75a4129b
data/example.rb CHANGED
@@ -1,110 +1,64 @@
1
- # This example demonstrates how to purchase a label for an international shipment.
2
- # Creating domestic shipment would follow a similiar proccess but would not require
3
- # the creation of CustomsItems and CustomsDeclaration objects.
1
+ # This example demonstrates how to purchase a label for a domestic US shipment.
4
2
  require 'shippo'
5
- require 'timeout'
6
3
 
7
- # replace <YOU_PRIVATE_KEY> with your ShippoToken key
8
- Shippo::api_token = 'YOU_PRIVATE_KEY'
4
+ # replace <YOUR_PRIVATE_KEY> with your ShippoToken key
5
+ Shippo::api_token = '<YOUR_PRIVATE_KEY>'
9
6
 
10
7
  # Create address_from object
11
8
  address_from = {
12
9
  :object_purpose => 'PURCHASE',
13
- :name => 'Laura Behrens Wu',
10
+ :name => 'Mr Hippo',
14
11
  :company => 'Shippo',
15
- :street1 => 'Clayton St.',
16
- :street_no => '215',
12
+ :street1 => '215 Clayton St.',
17
13
  :street2 => '',
18
14
  :city => 'San Francisco',
19
15
  :state => 'CA',
20
16
  :zip => '94117',
21
17
  :country => 'US',
22
18
  :phone => '+1 555 341 9393',
23
- :email => 'laura@goshippo.com'}
19
+ :email => 'support@goshippo.com'}
24
20
 
25
21
  # Create address_to object
26
22
  address_to = {
27
23
  :object_purpose => 'PURCHASE',
28
- :name => 'Mr Hippo"',
29
- :company => 'London Zoo"',
30
- :street1 => 'Regents Park',
31
- :street2 => 'Outer Cir',
32
- :city => 'LONDON',
33
- :state => '',
34
- :zip => 'NW1 4RY',
35
- :country => 'GB',
24
+ :name => 'Mrs Hippo"',
25
+ :company => 'San Diego Zoo',
26
+ :street1 => '2920 Zoo Drive',
27
+ :city => 'San Diego',
28
+ :state => 'CA',
29
+ :zip => '92101',
30
+ :country => 'US',
36
31
  :phone => '+1 555 341 9393',
37
- :email => 'mrhippo@goshippo.com'}
32
+ :email => 'hippo@goshippo.com'}
38
33
 
39
34
  # Create parcel object
40
35
  parcel = {
41
36
  :length => 5,
42
- :width => 1,
43
- :height => 5.555,
44
- :distance_unit => :cm,
37
+ :width => 2,
38
+ :height => 5,
39
+ :distance_unit => :in,
45
40
  :weight => 2,
46
41
  :mass_unit => :lb}
47
42
 
48
- #example CustomsItems object. This is only required for int'l shipment only.
49
- customs_item = {
50
- :description => "T-Shirt",
51
- :quantity => 2,
52
- :net_weight => "400",
53
- :mass_unit => "g",
54
- :value_amount => "20",
55
- :value_currency => "USD",
56
- :origin_country => "US"}
57
-
58
- #Creating the CustomsDeclaration
59
- #(CustomsDeclarations are only required for international shipments)
60
- customs_declaration = Shippo::Customs_Declaration.create(
61
- :contents_type => "MERCHANDISE",
62
- :contents_explanation => "T-Shirt purchase",
63
- :non_delivery_option => "RETURN",
64
- :certify => true,
65
- :certify_signer => "Laura Behrens Wu",
66
- :items => [customs_item])
67
-
68
- # Creating the shipment object. In this example, the objects are directly passed to the
69
- # Shipment.create method, Alternatively, the Address and Parcel objects could be created
70
- # using Address.create(..) and Parcel.create(..) functions respectively
43
+ # Creating the shipment object
71
44
  puts "Creating shipment object.."
72
45
  shipment = Shippo::Shipment.create(
73
46
  :object_purpose => 'PURCHASE',
74
- :submission_type => 'DROPOFF',
75
47
  :address_from => address_from,
76
48
  :address_to => address_to,
77
49
  :parcel => parcel,
78
- :customs_declaration => customs_declaration)
79
-
80
- puts "Shipment created. Waiting for rates to be generated.."
50
+ :async => false )
81
51
 
82
- # Wait for rates to be generated
83
- timeout_rates_request = 10 # seconds
84
- while ["QUEUED","WAITING"].include? shipment.object_status do
85
- Timeout::timeout(timeout_rates_request) do
86
- shipment = Shippo::Shipment.get(shipment["object_id"])
87
- end
88
- end
89
-
90
- # Get all rates for shipment.
91
- rates = shipment.rates()
92
-
93
- # Get the first rate in the rates results
94
- rate = rates[0]
52
+ # Get the desired rate according to your business logic
53
+ # We select the first rate in this example
54
+ rate = shipment.rates()[0]
95
55
 
96
56
  puts "Rates generated. Purchasing a #{rate.provider} #{rate.servicelevel_name} label"
97
57
 
98
58
  # Purchase the desired rate (create a Transaction object)
99
- transaction = Shippo::Transaction.create(:rate => rate["object_id"])
100
-
101
- # Wait for transaction to be proccessed
102
- timeout_label_request = 10 # seconds
103
- while ["QUEUED","WAITING"].include? transaction.object_status do
104
- Timeout::timeout(timeout_label_request) do
105
- transaction = Shippo::Transaction.get(transaction["object_id"])
106
- end
107
- end
59
+ transaction = Shippo::Transaction.create(
60
+ :rate => rate["object_id"],
61
+ :async => false )
108
62
 
109
63
  # label_url and tracking_number
110
64
  if transaction.object_status == "SUCCESS"
@@ -0,0 +1,8 @@
1
+ module Shippo
2
+ class CarrierAccount < Resource
3
+ @non_standard_URL = "/carrier_accounts"
4
+ include Shippo::Operations::List
5
+ include Shippo::Operations::Create
6
+ include Shippo::Operations::Update
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ module Shippo
2
+ module Operations
3
+ module Update
4
+ module ClassMethods
5
+ def update(object_id, params={})
6
+ response = Shippo.request(:put, "#{url}/#{CGI.escape(object_id)}/", params)
7
+ self.construct_from(response)
8
+ end
9
+ end
10
+ def self.included(base)
11
+ base.extend(ClassMethods)
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/shippo.rb CHANGED
@@ -5,18 +5,25 @@ require 'set'
5
5
  require_relative 'shippo/error.rb'
6
6
  require_relative 'shippo/container_object.rb'
7
7
  require_relative 'shippo/api_object.rb'
8
- require_relative 'shippo/list.rb'
9
- require_relative 'shippo/create.rb'
10
8
  require_relative 'shippo/resource.rb'
9
+
10
+ # api operations
11
+ require_relative 'shippo/create.rb'
12
+ require_relative 'shippo/update.rb'
13
+ require_relative 'shippo/list.rb'
14
+
15
+
16
+ # api objects
11
17
  require_relative 'shippo/address.rb'
12
- require_relative 'shippo/parcel.rb'
13
- require_relative 'shippo/shipment.rb'
14
- require_relative 'shippo/transaction.rb'
15
- require_relative 'shippo/rate.rb'
16
- require_relative 'shippo/manifest.rb'
18
+ require_relative 'shippo/carrieraccount.rb'
17
19
  require_relative 'shippo/customs_item.rb'
18
20
  require_relative 'shippo/customs_declaration.rb'
21
+ require_relative 'shippo/manifest.rb'
22
+ require_relative 'shippo/parcel.rb'
23
+ require_relative 'shippo/rate.rb'
19
24
  require_relative 'shippo/refund.rb'
25
+ require_relative 'shippo/shipment.rb'
26
+ require_relative 'shippo/transaction.rb'
20
27
 
21
28
  module Shippo
22
29
  @api_base = 'https://api.goshippo.com/v1'
@@ -50,7 +57,7 @@ module Shippo
50
57
  pairs.push "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
51
58
  }
52
59
  url += "?#{pairs.join('&')}" unless pairs.empty?
53
- when :post
60
+ else
54
61
  payload = params.to_json
55
62
  end
56
63
  opts = { :headers => headers,
metadata CHANGED
@@ -1,61 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shippo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shippo & Contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-23 00:00:00.000000000 Z
11
+ date: 2015-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mime-types
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.25'
34
- - - <
34
+ - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '3.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - '>='
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '1.25'
44
- - - <
44
+ - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ~>
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: 1.8.1
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ~>
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: 1.8.1
61
61
  description: Quick and easy access to the Shippo API
@@ -64,24 +64,26 @@ executables: []
64
64
  extensions: []
65
65
  extra_rdoc_files: []
66
66
  files:
67
+ - "./lib/shippo/address.rb"
68
+ - "./lib/shippo/api_object.rb"
69
+ - "./lib/shippo/carrieraccount.rb"
70
+ - "./lib/shippo/container_object.rb"
71
+ - "./lib/shippo/create.rb"
72
+ - "./lib/shippo/customs_declaration.rb"
73
+ - "./lib/shippo/customs_item.rb"
74
+ - "./lib/shippo/error.rb"
75
+ - "./lib/shippo/list.rb"
76
+ - "./lib/shippo/manifest.rb"
77
+ - "./lib/shippo/parcel.rb"
78
+ - "./lib/shippo/rate.rb"
79
+ - "./lib/shippo/refund.rb"
80
+ - "./lib/shippo/resource.rb"
81
+ - "./lib/shippo/shipment.rb"
82
+ - "./lib/shippo/transaction.rb"
83
+ - "./lib/shippo/update.rb"
67
84
  - example.rb
68
- - test/test.rb
69
85
  - lib/shippo.rb
70
- - ./lib/shippo/address.rb
71
- - ./lib/shippo/api_object.rb
72
- - ./lib/shippo/container_object.rb
73
- - ./lib/shippo/create.rb
74
- - ./lib/shippo/customs_declaration.rb
75
- - ./lib/shippo/customs_item.rb
76
- - ./lib/shippo/error.rb
77
- - ./lib/shippo/list.rb
78
- - ./lib/shippo/manifest.rb
79
- - ./lib/shippo/parcel.rb
80
- - ./lib/shippo/rate.rb
81
- - ./lib/shippo/refund.rb
82
- - ./lib/shippo/resource.rb
83
- - ./lib/shippo/shipment.rb
84
- - ./lib/shippo/transaction.rb
86
+ - test/test.rb
85
87
  homepage: http://goshippo.com
86
88
  licenses:
87
89
  - MIT
@@ -92,17 +94,17 @@ require_paths:
92
94
  - lib
93
95
  required_ruby_version: !ruby/object:Gem::Requirement
94
96
  requirements:
95
- - - '>='
97
+ - - ">="
96
98
  - !ruby/object:Gem::Version
97
99
  version: '0'
98
100
  required_rubygems_version: !ruby/object:Gem::Requirement
99
101
  requirements:
100
- - - '>='
102
+ - - ">="
101
103
  - !ruby/object:Gem::Version
102
104
  version: '0'
103
105
  requirements: []
104
106
  rubyforge_project:
105
- rubygems_version: 2.0.14
107
+ rubygems_version: 2.4.5.1
106
108
  signing_key:
107
109
  specification_version: 4
108
110
  summary: Shippo API