easypost 2.3.0 → 2.4.0

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: 67ae6ddf6e3bdb7a926de241245aff55792b0281
4
- data.tar.gz: 818f5cfead41f0ac5ec25214884249d232164cc6
3
+ metadata.gz: 022e41326d9ad6741c522ddc51cdee8169a0132a
4
+ data.tar.gz: 389053b0e140ead7d54488ced5c215f79d4a9930
5
5
  SHA512:
6
- metadata.gz: ed752b2c794b8ece0f10f83ca5d554a33963bc5dbf3bf75cd1ac5f400ccd1d421f3ddbb421586d731b332c39826ffa285561d01967306a0d04cbb95eab271263
7
- data.tar.gz: 731107bae2e07e53ef5ff2540a8df9ab59c37765976dabda1a7a2ef9094fee56855233dd849a474156f871ceab720c27af246b16a237dee08df60af754e639a3
6
+ metadata.gz: b4dd67994b147e1de7d0ba0b513e0e44203e10ecaa236c7a15d475b956746c5a2720d7fec643aaece62731bbc7e05b2a14748df432a6761f1c17de6a2f9dda5c
7
+ data.tar.gz: d2a15deccdee35141fb29bf0da7eb1c6d71fdb76520c40eed8ed3eb0fa0b7ed0c28ef5e354c31f3704d54d637b860851f5c35736c2ff87cd6e14e5b86e82924d
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.4.0 2016-12-08
2
+
3
+ * Add report resource to ruby client
4
+
1
5
  === 2.3.0 2016-11-25
2
6
 
3
7
  * Updated dependencies to allow rest-client 2.0.0 and above
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
1
  source 'https://rubygems.org'
2
- gemspec
2
+ gemspec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.0
1
+ 2.4.0
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.0.0
@@ -31,6 +31,7 @@ require 'easypost/printer'
31
31
  require 'easypost/print_job'
32
32
  require 'easypost/carrier_account'
33
33
  require 'easypost/user'
34
+ require 'easypost/report'
34
35
 
35
36
  require 'easypost/error'
36
37
 
@@ -0,0 +1,47 @@
1
+ module EasyPost
2
+ class Report < Resource
3
+ REPORT_TYPES = { shprep: 'shipment', plrep: 'payment_log', trkrep: 'tracker' }
4
+
5
+ def self.create(params={}, api_key=nil)
6
+ url = self.url
7
+ wrapped_params = {}
8
+ wrapped_params[class_name.to_sym] = params
9
+
10
+ if REPORT_TYPES.values.include?(params[:type].to_s)
11
+ url += "/#{params[:type]}"
12
+ else
13
+ raise Error.new("Undetermined Report Type")
14
+ end
15
+
16
+ response, api_key = EasyPost.request(:post, url, api_key, params)
17
+ return Util.convert_to_easypost_object(response, api_key)
18
+ end
19
+
20
+ def self.retrieve(params, api_key=nil)
21
+ url = self.url
22
+ obj_id = params[:id].split("_")[0]
23
+
24
+ if REPORT_TYPES.has_key?(obj_id.to_sym)
25
+ url += "/#{REPORT_TYPES[obj_id.to_sym]}/#{params[:id]}"
26
+ else
27
+ raise Error.new("Undetermined Report Type")
28
+ end
29
+
30
+ response, api_key = EasyPost.request(:get, url, api_key, params)
31
+ return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
32
+ end
33
+
34
+ def self.all(filters={}, api_key=nil)
35
+ url = self.url
36
+
37
+ if REPORT_TYPES.values.include?(filters[:type].to_s)
38
+ url += "/#{filters[:type]}"
39
+ else
40
+ raise Error.new("Undetermined Report Type")
41
+ end
42
+
43
+ response, api_key = EasyPost.request(:get, url, api_key, filters)
44
+ return EasyPost::Util::convert_to_easypost_object(response, api_key) if response
45
+ end
46
+ end
47
+ end
@@ -38,7 +38,8 @@ module EasyPost
38
38
  'Printer' => Printer,
39
39
  'PrintJob' => PrintJob,
40
40
  'CarrierAccount' => CarrierAccount,
41
- 'User' => User
41
+ 'User' => User,
42
+ 'Report' => Report
42
43
  }
43
44
 
44
45
  prefixes = {
@@ -63,7 +64,7 @@ module EasyPost
63
64
  'printer' => Printer,
64
65
  'printjob' => PrintJob,
65
66
  'ca' => CarrierAccount,
66
- 'user' => User
67
+ 'user' => User,
67
68
  }
68
69
 
69
70
  case response
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe EasyPost::Report do
4
+ [:shipment, :tracker, :payment_log].each do |report_type|
5
+ context "report" do
6
+ let(:type) { report_type }
7
+ let(:type_name) {
8
+ case type
9
+ when :shipment
10
+ "ShipmentReport"
11
+ when :tracker
12
+ "TrackerReport"
13
+ when :payment_log
14
+ "PaymentLogReport"
15
+ else
16
+ raise "Invalid type!"
17
+ end
18
+ }
19
+
20
+ describe '#create' do
21
+ it 'creates a report object' do
22
+ report = EasyPost::Report.create(
23
+ start_date: Date.today - 30,
24
+ end_date: Date.today,
25
+ type: type
26
+ )
27
+ expect(report.object).to eq type_name
28
+ # will switch that test on when tracker status is deployed
29
+ # expect(report.status).to eq 'available'
30
+ end
31
+ end
32
+
33
+ describe '#retrieve' do
34
+ it 'retrieves a user created report by public_id' do
35
+ report_1 = EasyPost::Report.create(
36
+ start_date: Date.today - 30,
37
+ end_date: Date.today,
38
+ type: type
39
+ )
40
+ report_2 = EasyPost::Report.retrieve(id: report_1.id)
41
+
42
+ expect(report_1.object).to eq type_name
43
+ expect(report_2.object).to eq type_name
44
+ expect(report_2.id).to eq(report_1.id)
45
+ end
46
+ end
47
+
48
+ describe '#all' do
49
+ it 'retrieves all user created reports' do
50
+ report_1 = EasyPost::Report.create(
51
+ start_date: Date.today - 25,
52
+ end_date: Date.today,
53
+ type: type
54
+ )
55
+
56
+ report_2 = EasyPost::Report.create(
57
+ start_date: Date.today - 29,
58
+ end_date: Date.today,
59
+ type: type
60
+ )
61
+ reports = EasyPost::Report.all(type: type)
62
+
63
+ expect(reports.count).to eq 2
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ it 'fails to create a report object' do
70
+ expect { EasyPost::Report.create(
71
+ start_date: Date.today - 30,
72
+ end_date: Date.today,
73
+ type: 'foobar'
74
+ ) }.to raise_exception(EasyPost::Error)
75
+ end
76
+ end
@@ -64,8 +64,8 @@ describe EasyPost::User do
64
64
  # api_keys = EasyPost::User.all_api_keys
65
65
 
66
66
  # my_keys = api_keys.keys
67
- # expect(my_keys.first.mode).to eq("production")
68
- # expect(my_keys.last.mode).to eq("test")
67
+ # expect(my_keys.first.mode).to eq("test")
68
+ # expect(my_keys.last.mode).to eq("production")
69
69
 
70
70
  # me = EasyPost::User.retrieve_me
71
71
  # children_count = me.children.count
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easypost
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sawyer Bateman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-25 00:00:00.000000000 Z
11
+ date: 2016-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -95,6 +95,7 @@ files:
95
95
  - Rakefile
96
96
  - VERSION
97
97
  - bin/easypost-irb
98
+ - circle.yml
98
99
  - easypost.gemspec
99
100
  - lib/easypost.rb
100
101
  - lib/easypost/address.rb
@@ -117,6 +118,7 @@ files:
117
118
  - lib/easypost/printer.rb
118
119
  - lib/easypost/rate.rb
119
120
  - lib/easypost/refund.rb
121
+ - lib/easypost/report.rb
120
122
  - lib/easypost/resource.rb
121
123
  - lib/easypost/scan_form.rb
122
124
  - lib/easypost/shipment.rb
@@ -132,6 +134,7 @@ files:
132
134
  - spec/item_spec.rb
133
135
  - spec/order_spec.rb
134
136
  - spec/pickup_spec.rb
137
+ - spec/report_spec.rb
135
138
  - spec/shipment_spec.rb
136
139
  - spec/spec_helper.rb
137
140
  - spec/support/constant.rb
@@ -169,6 +172,7 @@ test_files:
169
172
  - spec/item_spec.rb
170
173
  - spec/order_spec.rb
171
174
  - spec/pickup_spec.rb
175
+ - spec/report_spec.rb
172
176
  - spec/shipment_spec.rb
173
177
  - spec/spec_helper.rb
174
178
  - spec/support/constant.rb