easypost 2.7.2 → 3.1.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.
@@ -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,39 +1,33 @@
1
1
  module EasyPost
2
2
  class Error < StandardError
3
3
  attr_reader :message
4
- attr_reader :http_status
4
+ attr_reader :status
5
+ attr_reader :http_status # deprecated
5
6
  attr_reader :http_body
6
- attr_reader :json_body
7
- attr_reader :param
8
7
  attr_reader :code
9
8
  attr_reader :errors
10
9
 
11
- def initialize(message=nil, http_status=nil, http_body=nil, json_body={})
10
+ def initialize(message = nil, status = nil, code = nil, errors = nil, http_body = nil)
12
11
  @message = message
13
- @http_status = http_status
12
+ @status = status
13
+ @http_status = status # deprecated
14
+ @code = code
15
+ @errors = errors
14
16
  @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)
20
17
 
21
18
  super(message)
22
19
  end
23
20
 
24
21
  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
22
+ "#{code} (#{status}): #{message} #{errors}".strip
23
+ end
24
+
25
+ def ==(other)
26
+ other.is_a?(Error) &&
27
+ message == other.message &&
28
+ status == other.status &&
29
+ code == other.code &&
30
+ errors == other.errors
36
31
  end
37
32
  end
38
33
  end
39
-
@@ -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)
@@ -40,15 +42,14 @@ module EasyPost
40
42
  end
41
43
 
42
44
  values.each do |k, v|
43
- @values[k] = Util.convert_to_easypost_object(v, api_key, self, k)
45
+ @values[k.to_s] = Util.convert_to_easypost_object(v, api_key, self, k)
44
46
  @transient_values.delete(k)
45
47
  @unsaved_values.delete(k)
46
48
  end
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,7 +55,7 @@ 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
@@ -66,9 +66,7 @@ module EasyPost
66
66
 
67
67
  self.get_rates unless self.rates
68
68
 
69
- carriers = carriers.is_a?(String) ? carriers.split(',') : Array(carriers)
70
- carriers.map!(&:downcase)
71
- carriers.map!(&:strip)
69
+ carriers = EasyPost::Util.normalize_string_list(carriers)
72
70
 
73
71
  negative_carriers = []
74
72
  carriers_copy = carriers.clone
@@ -79,9 +77,7 @@ module EasyPost
79
77
  end
80
78
  end
81
79
 
82
- services = services.is_a?(String) ? services.split(',') : Array(services)
83
- services.map!(&:downcase)
84
- services.map!(&:strip)
80
+ services = EasyPost::Util.normalize_string_list(services)
85
81
 
86
82
  negative_services = []
87
83
  services_copy = services.clone
@@ -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
 
@@ -15,6 +15,11 @@ module EasyPost
15
15
  end
16
16
  end
17
17
 
18
+ def self.normalize_string_list(lst)
19
+ lst = lst.is_a?(String) ? lst.split(',') : Array(lst)
20
+ lst.map(&:to_s).map(&:downcase).map(&:strip)
21
+ end
22
+
18
23
  def self.convert_to_easypost_object(response, api_key, parent=nil, name=nil)
19
24
  types = {
20
25
  'Address' => Address,
@@ -42,6 +47,8 @@ module EasyPost
42
47
  'ShipmentReport' => Report,
43
48
  'PaymentLogReport' => Report,
44
49
  'TrackerReport' => Report,
50
+ 'RefundReport' => Report,
51
+ 'ShipmentInvoiceReport' => Report,
45
52
  'Webhook' => Webhook
46
53
  }
47
54
 
@@ -70,6 +77,8 @@ module EasyPost
70
77
  'shprep' => Report,
71
78
  'plrep' => Report,
72
79
  'trkrep' => Report,
80
+ 'refrep' => Report,
81
+ 'shpinvrep' => Report,
73
82
  'hook' => Webhook
74
83
  }
75
84
 
@@ -86,7 +95,7 @@ module EasyPost
86
95
  cls = prefixes[cls_prefix[0..-2]]
87
96
  end
88
97
  elsif response['id']
89
- if response[:id].index('_').nil?
98
+ if response['id'].index('_').nil?
90
99
  cls = EasyPostObject
91
100
  elsif cls_prefix = response['id'][0..response['id'].index('_')]
92
101
  cls = prefixes[cls_prefix[0..-2]]
@@ -99,49 +108,5 @@ module EasyPost
99
108
  return response
100
109
  end
101
110
  end
102
-
103
- def self.symbolize_names(obj)
104
- case obj
105
- when Hash
106
- result = {}
107
- obj.each do |k, v|
108
- k = (k.to_sym rescue k) || k
109
- obj[k] = symbolize_names(v)
110
- end
111
- return result
112
- when Array
113
- return obj.map { |v| symbolize_names(v) }
114
- else
115
- return obj
116
- end
117
- end
118
-
119
- def self.url_encode(key)
120
- URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
121
- end
122
-
123
- def self.flatten_params(params, parent_key=nil)
124
- result = []
125
- if params.is_a?(Hash)
126
- params.each do |k, v|
127
- calculated_key = parent_key ? "#{parent_key}[#{url_encode(k)}]" : url_encode(k)
128
- if v.is_a?(Hash) or v.is_a?(Array)
129
- result += flatten_params(v, calculated_key)
130
- else
131
- result << [calculated_key, v]
132
- end
133
- end
134
- elsif params.is_a?(Array)
135
- params.each_with_index do |v, i|
136
- calculated_key = parent_key ? "#{parent_key}[#{i}]" : i
137
- if v.is_a?(Hash) or v.is_a?(Array)
138
- result += flatten_params(v, calculated_key)
139
- else
140
- result << [calculated_key, v]
141
- end
142
- end
143
- end
144
- return result
145
- end
146
111
  end
147
112
  end