easypost 2.7.1 → 3.1.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.
@@ -1,7 +1,7 @@
1
1
  module EasyPost
2
2
  class CarrierAccount < Resource
3
3
  def self.types
4
- response, api_key = EasyPost.request(:get, "/carrier_types", @api_key)
4
+ response = EasyPost.make_request(:get, "/carrier_types", @api_key)
5
5
  return Util.convert_to_easypost_object(response, api_key)
6
6
  end
7
7
  end
@@ -1,4 +1,9 @@
1
1
  module EasyPost
2
2
  class CustomsInfo < Resource
3
+
4
+ def self.all(filters={}, api_key=nil)
5
+ raise NotImplementedError.new('CustomsInfo.all not implemented.')
6
+ end
7
+
3
8
  end
4
9
  end
@@ -1,4 +1,9 @@
1
1
  module EasyPost
2
2
  class CustomsItem < Resource
3
+
4
+ def self.all(filters={}, api_key=nil)
5
+ raise NotImplementedError.new('CustomsItem.all not implemented.')
6
+ end
7
+
3
8
  end
4
9
  end
@@ -1,38 +1,31 @@
1
1
  module EasyPost
2
2
  class Error < StandardError
3
3
  attr_reader :message
4
- attr_reader :http_status
5
- attr_reader :http_body
6
- attr_reader :json_body
7
- attr_reader :param
4
+ attr_reader :status
5
+ attr_reader :http_status # deprecated
8
6
  attr_reader :code
9
7
  attr_reader :errors
10
8
 
11
- def initialize(message=nil, http_status=nil, http_body=nil, json_body={})
9
+ def initialize(message = nil, status = nil, code = nil, errors = nil)
12
10
  @message = message
13
- @http_status = http_status
14
- @http_body = http_body
15
- @json_body = json_body
16
-
17
- @param = @json_body.fetch(:error, {}).fetch(:param, nil)
18
- @code = @json_body.fetch(:error, {}).fetch(:code, nil)
19
- @errors = @json_body.fetch(:error, {}).fetch(:errors, nil)
11
+ @status = status
12
+ @http_status = status # deprecated
13
+ @code = code
14
+ @errors = errors
20
15
 
21
16
  super(message)
22
17
  end
23
18
 
24
19
  def to_s
25
- s = "#{@code} (#{@http_status}): #{@message}";
26
- if @errors
27
- s += "\nField errors:\n"
28
- @errors.each do |field_error|
29
- field_error.each do |k, v|
30
- s += " #{k}: #{v}\n"
31
- end
32
- s += "\n"
33
- end
34
- end
35
- s
20
+ "#{code} (#{status}): #{message} #{errors}".strip
21
+ end
22
+
23
+ def ==(other)
24
+ other.is_a?(Error) &&
25
+ message == other.message &&
26
+ status == other.status &&
27
+ code == other.code &&
28
+ errors == other.errors
36
29
  end
37
30
  end
38
31
  end
@@ -2,7 +2,7 @@ module EasyPost
2
2
  class Item < Resource
3
3
 
4
4
  def self.retrieve_reference(params={}, api_key=nil)
5
- response, api_key = EasyPost.request(:get, url + '/retrieve_reference', api_key, params)
5
+ response = EasyPost.make_request(:get, url + '/retrieve_reference', api_key, params)
6
6
  return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
7
7
  end
8
8
 
@@ -1,3 +1,5 @@
1
+ require "set"
2
+
1
3
  module EasyPost
2
4
  class EasyPostObject
3
5
  include Enumerable
@@ -22,12 +24,12 @@ module EasyPost
22
24
  end
23
25
 
24
26
  def to_s(*args)
25
- MultiJson.dump(@values, :pretty => true)
27
+ JSON.dump(@values)
26
28
  end
27
29
 
28
- def inspect()
30
+ def inspect
29
31
  id_string = (self.respond_to?(:id) && !self.id.nil?) ? " id=#{self.id}" : ""
30
- "#<#{self.class}:#{id_string}> JSON: " + MultiJson.dump(@values, :pretty => true)
32
+ "#<#{self.class}:#{id_string}> JSON: " + to_json
31
33
  end
32
34
 
33
35
  def refresh_from(values, api_key, partial=false)
@@ -47,8 +49,7 @@ module EasyPost
47
49
  end
48
50
 
49
51
  def [](k)
50
- k = k.to_sym if k.is_a?(String)
51
- @values[k]
52
+ @values[k.to_s]
52
53
  end
53
54
 
54
55
  def []=(k, v)
@@ -64,7 +65,7 @@ module EasyPost
64
65
  end
65
66
 
66
67
  def to_json(options = {})
67
- MultiJson.dump(@values)
68
+ JSON.dump(@values)
68
69
  end
69
70
 
70
71
  def as_json(options = {})
@@ -144,6 +145,5 @@ module EasyPost
144
145
  end
145
146
  end
146
147
  end
147
-
148
148
  end
149
149
  end
@@ -2,7 +2,7 @@ module EasyPost
2
2
  class Order < Resource
3
3
 
4
4
  def get_rates(params={})
5
- response, api_key = EasyPost.request(:get, url + '/rates', @api_key, params)
5
+ response = EasyPost.make_request(:get, url + '/rates', @api_key, params)
6
6
  self.refresh_from(response, @api_key, true)
7
7
 
8
8
  return self
@@ -16,11 +16,15 @@ module EasyPost
16
16
  params[:service] = temp.service
17
17
  end
18
18
 
19
- response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
19
+ response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
20
20
  self.refresh_from(response, @api_key, true)
21
21
 
22
22
  return self
23
23
  end
24
24
 
25
+ def self.all(filters={}, api_key=nil)
26
+ raise NotImplementedError.new('Order.all not implemented.')
27
+ end
28
+
25
29
  end
26
30
  end
@@ -9,17 +9,22 @@ module EasyPost
9
9
  params[:service] = temp.service
10
10
  end
11
11
 
12
- response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
12
+ response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
13
13
  self.refresh_from(response, @api_key, true)
14
14
 
15
15
  return self
16
16
  end
17
17
 
18
18
  def cancel(params={})
19
- response, api_key = EasyPost.request(:post, url + '/cancel', @api_key, params)
19
+ response = EasyPost.make_request(:post, url + '/cancel', @api_key, params)
20
20
  self.refresh_from(response, @api_key, true)
21
21
 
22
22
  return self
23
23
  end
24
+
25
+ def self.all(filters={}, api_key=nil)
26
+ raise NotImplementedError.new('Pickup.all not implemented.')
27
+ end
28
+
24
29
  end
25
30
  end
@@ -2,7 +2,7 @@ module EasyPost
2
2
  class Printer < Resource
3
3
 
4
4
  def job
5
- response, api_key = EasyPost.request(
5
+ response = EasyPost.make_request(
6
6
  :get, url + '/jobs', @api_key
7
7
  )
8
8
  return EasyPost::Util::convert_to_easypost_object(response, api_key)
@@ -15,7 +15,7 @@ module EasyPost
15
15
  params[:postage_label] = temp
16
16
  end
17
17
 
18
- response, api_key = EasyPost.request(
18
+ response = EasyPost.make_request(
19
19
  :post, url + '/print_postage_label', @api_key, params
20
20
  )
21
21
  return true
@@ -5,7 +5,7 @@ module EasyPost
5
5
  wrapped_params = {}
6
6
  wrapped_params[class_name.to_sym] = params
7
7
 
8
- response, api_key = EasyPost.request(:post, url, api_key, params)
8
+ response = EasyPost.make_request(:post, url, api_key, params)
9
9
  return Util.convert_to_easypost_object(response, api_key)
10
10
  end
11
11
 
@@ -24,7 +24,7 @@ module EasyPost
24
24
  def self.all(filters={}, api_key=nil)
25
25
  url = "#{self.url}/#{filters[:type]}"
26
26
 
27
- response, api_key = EasyPost.request(:get, url, api_key, filters)
27
+ response = EasyPost.make_request(:get, url, api_key, filters)
28
28
  return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
29
29
  end
30
30
  end
@@ -11,9 +11,9 @@ module EasyPost
11
11
  raise NotImplementedError.new('Resource is an abstract class. You should perform actions on its subclasses (Address, Shipment, etc.)')
12
12
  end
13
13
  if(self.class_name[-1..-1] == 's' || self.class_name[-1..-1] == 'h')
14
- return "/#{CGI.escape(self.class_name.downcase)}es"
14
+ return "/v2/#{CGI.escape(self.class_name.downcase)}es"
15
15
  else
16
- return "/#{CGI.escape(class_name.downcase)}s"
16
+ return "/v2/#{CGI.escape(class_name.downcase)}s"
17
17
  end
18
18
  end
19
19
 
@@ -25,13 +25,13 @@ module EasyPost
25
25
  end
26
26
 
27
27
  def refresh
28
- response, api_key = EasyPost.request(:get, url, @api_key, @retrieve_options)
28
+ response = EasyPost.make_request(:get, url, @api_key, @retrieve_options)
29
29
  refresh_from(response, api_key)
30
30
  return self
31
31
  end
32
32
 
33
33
  def self.all(filters={}, api_key=nil)
34
- response, api_key = EasyPost.request(:get, url, api_key, filters)
34
+ response = EasyPost.make_request(:get, url, api_key, filters)
35
35
  return Util.convert_to_easypost_object(response, api_key)
36
36
  end
37
37
 
@@ -44,12 +44,12 @@ module EasyPost
44
44
  def self.create(params={}, api_key=nil)
45
45
  wrapped_params = {}
46
46
  wrapped_params[self.class_name().to_sym] = params
47
- response, api_key = EasyPost.request(:post, self.url, api_key, wrapped_params)
47
+ response = EasyPost.make_request(:post, self.url, api_key, wrapped_params)
48
48
  return Util.convert_to_easypost_object(response, api_key)
49
49
  end
50
50
 
51
51
  def delete
52
- response, api_key = EasyPost.request(:delete, url, @api_key)
52
+ response = EasyPost.make_request(:delete, url, @api_key)
53
53
  refresh_from(response, api_key)
54
54
  return self
55
55
  end
@@ -68,7 +68,7 @@ module EasyPost
68
68
 
69
69
  wrapped_params = {self.class.class_name => values}
70
70
 
71
- response, api_key = EasyPost.request(:put, url, @api_key, wrapped_params)
71
+ response = EasyPost.make_request(:put, url, @api_key, wrapped_params)
72
72
  refresh_from(response, api_key)
73
73
  end
74
74
  return self
@@ -1,7 +1,7 @@
1
1
  module EasyPost
2
2
  class ScanForm < Resource
3
3
  def self.create(params={}, api_key=nil)
4
- response, api_key = EasyPost.request(:post, self.url, api_key, params)
4
+ response = EasyPost.make_request(:post, self.url, api_key, params)
5
5
  return Util.convert_to_easypost_object(response, api_key)
6
6
  end
7
7
  end
@@ -2,7 +2,7 @@ module EasyPost
2
2
  class Shipment < Resource
3
3
 
4
4
  def get_rates(params={})
5
- response, api_key = EasyPost.request(:get, url + '/rates', @api_key, params)
5
+ response = EasyPost.make_request(:get, url + '/rates', @api_key, params)
6
6
  self.refresh_from(response, @api_key, true)
7
7
 
8
8
  return self
@@ -15,7 +15,7 @@ module EasyPost
15
15
  params[:rate] = temp
16
16
  end
17
17
 
18
- response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
18
+ response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
19
19
  self.refresh_from(response, @api_key, true)
20
20
 
21
21
  return self
@@ -28,14 +28,14 @@ module EasyPost
28
28
  params[:amount] = temp
29
29
  end
30
30
 
31
- response, api_key = EasyPost.request(:post, url + '/insure', @api_key, params)
31
+ response = EasyPost.make_request(:post, url + '/insure', @api_key, params)
32
32
  self.refresh_from(response, @api_key, true)
33
33
 
34
34
  return self
35
35
  end
36
36
 
37
37
  def refund(params={})
38
- response, api_key = EasyPost.request(:get, url + '/refund', @api_key, params)
38
+ response = EasyPost.make_request(:get, url + '/refund', @api_key, params)
39
39
  self.refresh_from(response, @api_key, true)
40
40
 
41
41
  return self
@@ -55,24 +55,12 @@ module EasyPost
55
55
  params[:file_format] = temp
56
56
  end
57
57
 
58
- response, api_key = EasyPost.request(:get, url + '/label', @api_key, params)
58
+ response = EasyPost.make_request(:get, url + '/label', @api_key, params)
59
59
  self.refresh_from(response, @api_key, true)
60
60
 
61
61
  return self
62
62
  end
63
63
 
64
- def stamp(params={})
65
- response, api_key = EasyPost.request(:get, url + '/stamp', @api_key, params)
66
-
67
- return response[:stamp_url]
68
- end
69
-
70
- def barcode(params={})
71
- response, api_key = EasyPost.request(:get, url + '/barcode', @api_key, params)
72
-
73
- return response[:barcode_url]
74
- end
75
-
76
64
  def lowest_rate(carriers=[], services=[])
77
65
  lowest = nil
78
66
 
@@ -2,13 +2,13 @@ module EasyPost
2
2
  class Tracker < Resource
3
3
  def self.create_list(params={}, api_key=nil)
4
4
  url = self.url + '/create_list'
5
- response, api_key = EasyPost.request(:post, url, api_key, params)
5
+ response = EasyPost.make_request(:post, url, api_key, params)
6
6
  return true
7
7
  end
8
8
 
9
9
  def self.all_updated(params={}, api_key=nil)
10
10
  url = self.url + '/all_updated'
11
- response, api_key = EasyPost.request(:get, url, api_key, params)
11
+ response = EasyPost.make_request(:get, url, api_key, params)
12
12
  return Util.convert_to_easypost_object(response, api_key)
13
13
  end
14
14
  end
@@ -1,9 +1,7 @@
1
1
  module EasyPost
2
2
  class User < Resource
3
3
  def self.create(params={}, api_key=nil)
4
- wrapped_params = {}
5
- wrapped_params[self.class_name().to_sym] = params
6
- response, api_key = EasyPost.request(:post, self.url, api_key, wrapped_params, {}, false)
4
+ response = EasyPost.make_request(:post, self.url, api_key, {self.class_name.to_sym => params})
7
5
  return Util.convert_to_easypost_object(response, api_key)
8
6
  end
9
7
 
@@ -14,7 +12,7 @@ module EasyPost
14
12
 
15
13
  wrapped_params = {user: values}
16
14
 
17
- response, api_key = EasyPost.request(:put, url, @api_key, wrapped_params)
15
+ response = EasyPost.make_request(:put, url, @api_key, wrapped_params)
18
16
  refresh_from(response, api_key)
19
17
  end
20
18
  return self
@@ -25,7 +23,7 @@ module EasyPost
25
23
  end
26
24
 
27
25
  def self.all_api_keys
28
- response, api_key = EasyPost.request(:get, "/api_keys", @api_key)
26
+ response = EasyPost.make_request(:get, "/api_keys", @api_key)
29
27
  return Util.convert_to_easypost_object(response, api_key)
30
28
  end
31
29
 
@@ -30,7 +30,6 @@ module EasyPost
30
30
  'Tracker' => Tracker,
31
31
  'Item' => Item,
32
32
  'Insurance' => Insurance,
33
- 'Container' => Container,
34
33
  'Order' => Order,
35
34
  'Pickup' => Pickup,
36
35
  'PickupRate' => PickupRate,
@@ -43,6 +42,8 @@ module EasyPost
43
42
  'ShipmentReport' => Report,
44
43
  'PaymentLogReport' => Report,
45
44
  'TrackerReport' => Report,
45
+ 'RefundReport' => Report,
46
+ 'ShipmentInvoiceReport' => Report,
46
47
  'Webhook' => Webhook
47
48
  }
48
49
 
@@ -60,7 +61,6 @@ module EasyPost
60
61
  'trk' => Tracker,
61
62
  'item' => Item,
62
63
  'ins' => Insurance,
63
- 'container' => Container,
64
64
  'order' => Order,
65
65
  'pickup' => Pickup,
66
66
  'pickuprate' => PickupRate,
@@ -72,6 +72,8 @@ module EasyPost
72
72
  'shprep' => Report,
73
73
  'plrep' => Report,
74
74
  'trkrep' => Report,
75
+ 'refrep' => Report,
76
+ 'shpinvrep' => Report,
75
77
  'hook' => Webhook
76
78
  }
77
79
 
@@ -81,10 +83,18 @@ module EasyPost
81
83
  when Hash
82
84
  if cls_name = response[:object]
83
85
  cls = types[cls_name]
84
- elsif response[:id] && cls_prefix = response[:id][0..response[:id].index('_')]
85
- cls = prefixes[cls_prefix[0..-2]]
86
- elsif response['id'] && cls_prefix = response['id'][0..response['id'].index('_')]
87
- cls = prefixes[cls_prefix[0..-2]]
86
+ elsif response[:id]
87
+ if response[:id].index('_').nil?
88
+ cls = EasyPostObject
89
+ elsif cls_prefix = response[:id][0..response[:id].index('_')]
90
+ cls = prefixes[cls_prefix[0..-2]]
91
+ end
92
+ elsif response['id']
93
+ if response['id'].index('_').nil?
94
+ cls = EasyPostObject
95
+ elsif cls_prefix = response['id'][0..response['id'].index('_')]
96
+ cls = prefixes[cls_prefix[0..-2]]
97
+ end
88
98
  end
89
99
 
90
100
  cls ||= EasyPostObject
@@ -93,49 +103,5 @@ module EasyPost
93
103
  return response
94
104
  end
95
105
  end
96
-
97
- def self.symbolize_names(obj)
98
- case obj
99
- when Hash
100
- result = {}
101
- obj.each do |k, v|
102
- k = (k.to_sym rescue k) || k
103
- obj[k] = symbolize_names(v)
104
- end
105
- return result
106
- when Array
107
- return obj.map { |v| symbolize_names(v) }
108
- else
109
- return obj
110
- end
111
- end
112
-
113
- def self.url_encode(key)
114
- URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
115
- end
116
-
117
- def self.flatten_params(params, parent_key=nil)
118
- result = []
119
- if params.is_a?(Hash)
120
- params.each do |k, v|
121
- calculated_key = parent_key ? "#{parent_key}[#{url_encode(k)}]" : url_encode(k)
122
- if v.is_a?(Hash) or v.is_a?(Array)
123
- result += flatten_params(v, calculated_key)
124
- else
125
- result << [calculated_key, v]
126
- end
127
- end
128
- elsif params.is_a?(Array)
129
- params.each_with_index do |v, i|
130
- calculated_key = parent_key ? "#{parent_key}[#{i}]" : i
131
- if v.is_a?(Hash) or v.is_a?(Array)
132
- result += flatten_params(v, calculated_key)
133
- else
134
- result << [calculated_key, v]
135
- end
136
- end
137
- end
138
- return result
139
- end
140
106
  end
141
107
  end