easypost 2.3.0 → 2.4.0

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: 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