aftership 4.1.0 → 4.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
- SHA1:
3
- metadata.gz: bd8c2c1d56f929b7428547ca2a26ed0f2ccaf913
4
- data.tar.gz: d60ee98fd8c674f9cc08f3049cda733892eec988
2
+ SHA256:
3
+ metadata.gz: 3511e0822f0b20e5cb61396d89191f215f3dc10ea98b8bd496d756e3992e115b
4
+ data.tar.gz: fe7997ade299d0171aa4c759b4cae347b342ee7f92d235404880a8661583b920
5
5
  SHA512:
6
- metadata.gz: 79e2489cd19d91abb55d60ae855d8f7fc02e9e308ebf0d7a68b7b6862cc95b053735cf4a4c7e0af28e4bd85295cf9d9fd80794eefa04bdc3c73f1a118b551534
7
- data.tar.gz: a54a20436876fec125d6ab026402a7e5db5df70d6786d0bbdbcbc98cb1cbe82c057b20374cfbf75b0263363491b5e3d9349abbca7adbfaa8d86184159428377d
6
+ metadata.gz: 5688761bfae46437bab5dba2ca5dd399cdd1bf131dc19401dc00bd09c76507fc980029117f05a4193484fc1dfd57e5444b78b8993eacaba65ba64237526e42c8
7
+ data.tar.gz: 1d9228cd05c2cc5e2b4d260d33e0aa3c5ff1c9f80169017a89e4eedd8a4d04978b14913df0c1d2e82d1bd742c481646932d47e189f1c6486548a7f0d4ecf2c52
data/README.md CHANGED
@@ -9,6 +9,16 @@ This extension helps developers to integrate with AfterShip easily.
9
9
  AfterShip provides an automated way for online merchants to track packages and send their customers delivery status notifications. Customers no longer need to deal with tracking numbers and track packages on their own. With AfterShip, online merchants extend their customer service after the point of purchase by keeping their customers actively informed, while saving time and money by reducing customers’ questions about the status of their purchase delivery.
10
10
 
11
11
  ### Changes
12
+ * 2016-01-11 4.3.1
13
+ - Updated gem `httpclient` version to 2.7.1
14
+
15
+ * 2015-12-14 4.3.0
16
+ - Added rescue methods for parsing JSON, and try to retrieve error codes from cloudflare
17
+ - Added /trackings/exports method
18
+ - Added auto-retry mechanism if invalid JSON response retrieved
19
+
20
+ * 2015-11-11 Pump version to 4.2.0
21
+ - Removed v3 code, support ENV variable AFTERSHIP_API_ENDPOINT for testing
12
22
 
13
23
  * 2014-10-31 Pump version to 4.1.0
14
24
  - Replaced HTTPI with HTTPClient
@@ -30,7 +40,7 @@ AfterShip provides an automated way for online merchants to track packages and s
30
40
  1. Add the following line to your application's Gemfile
31
41
 
32
42
  ```
33
- gem "aftership", "~> 4.1.0"
43
+ gem "aftership", "~> 4.3.1"
34
44
  ```
35
45
 
36
46
  2. Run bundler
@@ -93,26 +103,12 @@ AfterShip provides an automated way for online merchants to track packages and s
93
103
  AfterShip::V4::LastCheckpoint.get('ups', '1ZA6F598D992381375')
94
104
  ```
95
105
 
96
- ### V3
97
-
98
- ```
99
- require('aftership')
100
- AfterShip.api_key = 'YOUR_API_KEY'
101
-
102
- AfterShip::V3::Courier.get
103
- AfterShip::V3::Courier.detect('1ZA6F598D992381375')
106
+ ## The License (MIT)
104
107
 
105
- AfterShip::V3::Tracking.create('1ZA6F598D992381375', {'emails' => ['a@abcd.com', 'asdfasdfs@gmail.com']})
106
- AfterShip::V3::Tracking.get('ups', '1ZA6F598D992381375')
107
- AfterShip::V3::Tracking.get_multi
108
- AfterShip::V3::Tracking.update('ups', '1ZA6F598D992381375', {:title => 'Testing'})
109
- AfterShip::V3::Tracking.reactivate('ups', '1ZA6F598D992381375')
110
- AfterShip::V3::Tracking.delete('ups', '1ZA6F598D992381375')
108
+ Released under the MIT license. See the LICENSE file for the complete wording.
111
109
 
112
- AfterShip::V3::LastCheckpoint.get('ups', '1ZA6F598D992381375')
113
110
 
114
- ```
111
+ ## Contributor
115
112
 
116
- ## The License (MIT)
113
+ - Alex Topalov <me@alextopalov.com>
117
114
 
118
- Released under the MIT license. See the LICENSE file for the complete wording.
data/lib/aftership.rb CHANGED
@@ -1,9 +1,5 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
- require 'aftership/v3/courier'
4
- require 'aftership/v3/tracking'
5
- require 'aftership/v3/last_checkpoint'
6
-
7
3
  require 'aftership/v4/courier'
8
4
  require 'aftership/v4/tracking'
9
5
  require 'aftership/v4/last_checkpoint'
@@ -13,5 +9,5 @@ module AfterShip
13
9
  attr_accessor :api_key
14
10
  end
15
11
 
16
- URL = 'https://api.aftership.com'
12
+ URL = ENV['AFTERSHIP_API_ENDPOINT'] || 'https://api.aftership.com'
17
13
  end
@@ -1,47 +1,80 @@
1
- require 'httpclient'
2
- require 'json'
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
3
 
4
4
  module AfterShip
5
- module V4
6
- class Base
7
- class AfterShipError < StandardError;
8
- end
9
- attr_reader :http_verb_method, :end_point, :query, :body
5
+ module V4
6
+ class Base
7
+ class AfterShipError < StandardError
8
+ end
9
+ attr_reader :http_verb_method, :end_point, :query, :body
10
10
 
11
- def initialize(http_verb_method, end_point, query = {}, body = {})
12
- @http_verb_method = http_verb_method
13
- @end_point = end_point
14
- @query = query
15
- @body = body
11
+ MAX_TRIAL = 3
12
+ CALL_SLEEP = 3
16
13
 
17
- @client = HTTPClient.new
18
- end
14
+ def initialize(http_verb_method, end_point, query = {}, body = {})
15
+ @http_verb_method = http_verb_method
16
+ @end_point = end_point
17
+ @query = query
18
+ @body = body
19
+ @trial = 0
19
20
 
20
- def call
21
- header = {'aftership-api-key' => AfterShip.api_key, 'Content-Type' => 'application/json'}
21
+ @client = Faraday.new do |faraday|
22
+ faraday.url_prefix = "#{AfterShip::URL}/v4/"
23
+ faraday.request :url_encoded
24
+ faraday.response :json, content_type: 'application/json'
25
+ faraday.adapter :net_http
26
+ end
27
+ end
22
28
 
23
- parameters = {
24
- :query => query,
25
- :body => body.to_json,
26
- :header => header
27
- }
29
+ def call
30
+ headers = { 'aftership-api-key' => AfterShip.api_key }
28
31
 
29
- response = @client.send(http_verb_method, url, parameters)
32
+ cf_ray = ''
33
+ output = nil
34
+ uri = @client.build_url(end_point, query)
30
35
 
31
- if response.body
32
- JSON.parse(response.body)
33
- else
34
- raise(AfterShipError.new('response is nil'))
35
- end
36
+ loop do
37
+ response = @client.run_request(http_verb_method, uri, body, headers)
36
38
 
37
- end
39
+ cf_ray = response.headers['CF-RAY'] if response.headers
38
40
 
39
- private
41
+ if response.body
42
+ begin
43
+ output = response.body
44
+ @trial = MAX_TRIAL + 1
45
+ rescue StandardError
46
+ @trial += 1
40
47
 
41
- def url
42
- "#{AfterShip::URL}/v4/#{end_point.to_s}"
43
- end
48
+ sleep CALL_SLEEP
44
49
 
45
- end
46
- end
50
+ output = {
51
+ meta: {
52
+ code: 500,
53
+ message: 'Something went wrong on AfterShip\'s end.',
54
+ type: 'InternalError'
55
+ },
56
+ data: {
57
+ body: response.body,
58
+ cf_ray: cf_ray
59
+ }
60
+ }
61
+ end
62
+ else
63
+ output = {
64
+ meta: {
65
+ code: 500,
66
+ message: 'Something went wrong on AfterShip\'s end.',
67
+ type: 'InternalError'
68
+ },
69
+ data: {
70
+ }
71
+ }
72
+ end
73
+
74
+ break if @trial > MAX_TRIAL
75
+ end
76
+ output
77
+ end
78
+ end
79
+ end
47
80
  end
@@ -1,30 +1,29 @@
1
1
  require File.dirname(__FILE__) + '/base'
2
2
 
3
3
  module AfterShip
4
- module V4
5
- class Courier < AfterShip::V4::Base
4
+ module V4
5
+ class Courier < AfterShip::V4::Base
6
+ # GET /couriers
7
+ # Return a list of couriers activated at your AfterShip account.
8
+ def self.get
9
+ new(:get, 'couriers').call
10
+ end
6
11
 
7
- #GET /couriers
8
- #Return a list of couriers activated at your AfterShip account.
9
- def self.get
10
- new(:get, 'couriers').call
11
- end
12
+ # GET /couriers/all
13
+ # Return a list of all couriers.
14
+ def self.get_all
15
+ new(:get, 'couriers/all').call
16
+ end
12
17
 
13
- #GET /couriers/all
14
- #Return a list of all couriers.
15
- def self.get_all
16
- new(:get, 'couriers/all').call
17
- end
18
-
19
- #POST /couriers/detect
20
- #Return a list of matched couriers based on tracking number format and selected couriers or a list of couriers.
21
- def self.detect(tracking = nil)
22
- if tracking == nil
23
- raise ArgumentError.new('tracking object is required.')
24
- else
25
- new(:post, 'couriers/detect', {}, {:tracking => tracking}).call
26
- end
27
- end
28
- end
29
- end
18
+ # POST /couriers/detect
19
+ # Return a list of matched couriers based on tracking number format and selected couriers or a list of couriers.
20
+ def self.detect(tracking = nil)
21
+ if tracking.nil?
22
+ raise ArgumentError, 'tracking object is required.'
23
+ else
24
+ new(:post, 'couriers/detect', {}, { tracking: tracking }).call
25
+ end
26
+ end
27
+ end
28
+ end
30
29
  end
@@ -1,17 +1,15 @@
1
1
  require File.dirname(__FILE__) + '/base'
2
2
 
3
3
  module AfterShip
4
- module V4
5
- class LastCheckpoint < AfterShip::V4::Base
6
-
7
- def self.get(slug = '', tracking_number = '')
8
- if slug.empty? || tracking_number.empty?
9
- raise ArgumentError.new('slug and tracking_number are required.')
10
- else
11
- new(:get, "last_checkpoint/#{slug}/#{tracking_number}").call
12
- end
13
- end
14
-
15
- end
16
- end
4
+ module V4
5
+ class LastCheckpoint < AfterShip::V4::Base
6
+ def self.get(slug = '', tracking_number = '')
7
+ if slug.empty? || tracking_number.empty?
8
+ raise ArgumentError, 'slug and tracking_number are required.'
9
+ else
10
+ new(:get, "last_checkpoint/#{slug}/#{tracking_number}").call
11
+ end
12
+ end
13
+ end
14
+ end
17
15
  end
@@ -1,64 +1,86 @@
1
1
  require File.dirname(__FILE__) + '/base'
2
2
 
3
3
  module AfterShip
4
- module V4
5
- class Tracking < AfterShip::V4::Base
6
-
7
- #POST /trackings
8
- def self.create(tracking_number, params = {})
9
- if tracking_number.empty?
10
- raise ArgumentError.new('tracking_number is required.')
11
- else
12
- query_hash = {:tracking_number => tracking_number}
13
- query_hash.merge!(params)
14
- body = {:tracking => query_hash}
15
- new(:post, 'trackings', {}, body).call
16
- end
17
- end
18
-
19
- #POST /trackings/:slug/:tracking_number/retrack
20
- def self.retrack(slug, tracking_number)
21
- if slug.empty? || tracking_number.empty?
22
- raise ArgumentError.new('slug and tracking_number are required.')
23
- end
24
- new(:post, "trackings/#{slug}/#{tracking_number}/retrack").call
25
- end
26
-
27
- #DELETE /trackings/:slug/:tracking_number
28
- def self.delete(slug, tracking_number)
29
- if slug.empty? || tracking_number.empty?
30
- raise ArgumentError.new('slug and tracking_number are required.')
31
- end
32
- new(:delete, "trackings/#{slug}/#{tracking_number}").call
33
- end
34
-
35
- #GET /trackings/:slug/:tracking_number
36
- def self.get(slug, tracking_number, params = {})
37
- if slug.empty? || tracking_number.empty?
38
- raise ArgumentError.new('slug and tracking_number are required.')
39
- end
40
- new(:get, "trackings/#{slug}/#{tracking_number}", params).call
41
- end
42
-
43
- #GET /trackings
44
- def self.get_all(params = {})
45
- new(:get, 'trackings', params).call
46
- end
47
-
48
- #PUT /trackings/:slug/:tracking_number
49
- def self.update(slug, tracking_number, params = {})
50
- if slug.empty? || tracking_number.empty?
51
- raise ArgumentError.new('slug and tracking_number are required.')
52
- end
53
- body = {:tracking => params}
54
- new(:put, "trackings/#{slug}/#{tracking_number}", {}, body).call
55
- end
56
-
57
- #Deprecated
58
- #POST /trackings/:slug/:tracking_number/reactivate
59
- def self.reactivate(slug, tracking_number)
60
- raise StandardError.new('This method is deprecated, please use "retrack" instead')
61
- end
62
- end
63
- end
4
+ module V4
5
+ class Tracking < AfterShip::V4::Base
6
+ # POST /trackings
7
+ def self.create(tracking_number, params = {})
8
+ if tracking_number.empty? || tracking_number.nil?
9
+ raise ArgumentError, 'tracking_number is required.'
10
+ else
11
+ query_hash = { tracking_number: tracking_number }
12
+ query_hash.merge!(params)
13
+ body = { tracking: query_hash }
14
+ new(:post, 'trackings', {}, body).call
15
+ end
16
+ end
17
+
18
+ # POST /trackings/:slug/:tracking_number/retrack
19
+ def self.retrack(slug, tracking_number, params = {})
20
+ if slug.empty? || slug.nil? || tracking_number.empty? || tracking_number.nil?
21
+ raise ArgumentError, 'slug and tracking_number are required.'
22
+ end
23
+
24
+ new(:post, "trackings/#{slug}/#{tracking_number}/retrack", params).call
25
+ end
26
+
27
+ # DELETE /trackings/:slug/:tracking_number
28
+ def self.delete(slug, tracking_number, params = {})
29
+ if slug.empty? || slug.nil? || tracking_number.empty? || tracking_number.nil?
30
+ raise ArgumentError, 'slug and tracking_number are required.'
31
+ end
32
+
33
+ new(:delete, "trackings/#{slug}/#{tracking_number}", params).call
34
+ end
35
+
36
+ # DELETE /trackings/:id
37
+ def self.delete_by_id(id)
38
+ raise ArgumentError, 'id is required.' if id.empty? || id.nil?
39
+
40
+ new(:delete, "trackings/#{id}").call
41
+ end
42
+
43
+ # GET /trackings/:slug/:tracking_number
44
+ def self.get(slug, tracking_number, params = {})
45
+ if slug.empty? || slug.nil? || tracking_number.empty? || tracking_number.nil?
46
+ raise ArgumentError, 'slug and tracking_number are required.'
47
+ end
48
+
49
+ new(:get, "trackings/#{slug}/#{tracking_number}", params).call
50
+ end
51
+
52
+ # GET /trackings/:id
53
+ def self.get_by_id(id, params = {})
54
+ raise ArgumentError, 'id is required.' if id.empty? || id.nil?
55
+
56
+ new(:get, "trackings/#{id}", params).call
57
+ end
58
+
59
+ # GET /trackings
60
+ def self.get_all(params = {})
61
+ new(:get, 'trackings', params).call
62
+ end
63
+
64
+ # GET /trackings/exports
65
+ def self.export(params = {})
66
+ new(:get, 'trackings/exports', params).call
67
+ end
68
+
69
+ # PUT /trackings/:slug/:tracking_number
70
+ def self.update(slug, tracking_number, params = {})
71
+ if slug.empty? || slug.nil? || tracking_number.empty? || tracking_number.nil?
72
+ raise ArgumentError, 'slug and tracking_number are required.'
73
+ end
74
+
75
+ body = { tracking: params }
76
+ new(:put, "trackings/#{slug}/#{tracking_number}", {}, body).call
77
+ end
78
+
79
+ # Deprecated
80
+ # POST /trackings/:slug/:tracking_number/reactivate
81
+ def self.reactivate(_slug, _tracking_number)
82
+ raise StandardError, 'This method is deprecated, please use "retrack" instead'
83
+ end
84
+ end
85
+ end
64
86
  end
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aftership
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AfterShip Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-31 00:00:00.000000000 Z
11
+ date: 2021-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: httpclient
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.5.2
19
+ version: 1.3.0
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
- version: 2.5.2
26
+ version: 1.3.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: faraday_middleware
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.14.1
34
- type: :development
33
+ version: 1.0.0
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.14.1
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.14.1
55
69
  description: Developed for easy integration with AfterShip
56
70
  email:
57
71
  - support@aftership.com
@@ -59,16 +73,12 @@ executables: []
59
73
  extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
- - lib/aftership/v3/base.rb
63
- - lib/aftership/v3/courier.rb
64
- - lib/aftership/v3/last_checkpoint.rb
65
- - lib/aftership/v3/tracking.rb
76
+ - README.md
77
+ - lib/aftership.rb
66
78
  - lib/aftership/v4/base.rb
67
79
  - lib/aftership/v4/courier.rb
68
80
  - lib/aftership/v4/last_checkpoint.rb
69
81
  - lib/aftership/v4/tracking.rb
70
- - lib/aftership.rb
71
- - README.md
72
82
  homepage: https://www.aftership.com
73
83
  licenses:
74
84
  - MIT
@@ -79,18 +89,17 @@ require_paths:
79
89
  - lib
80
90
  required_ruby_version: !ruby/object:Gem::Requirement
81
91
  requirements:
82
- - - '>='
92
+ - - ">="
83
93
  - !ruby/object:Gem::Version
84
- version: 1.8.7
94
+ version: 2.4.0
85
95
  required_rubygems_version: !ruby/object:Gem::Requirement
86
96
  requirements:
87
- - - '>='
97
+ - - ">="
88
98
  - !ruby/object:Gem::Version
89
99
  version: '0'
90
100
  requirements:
91
101
  - none
92
- rubyforge_project:
93
- rubygems_version: 2.0.14
102
+ rubygems_version: 3.1.2
94
103
  signing_key:
95
104
  specification_version: 4
96
105
  summary: Formerly known as aftership_ruby and a wrapper for AfterShip API. Support
@@ -1,47 +0,0 @@
1
- require 'httpclient'
2
- require 'json'
3
-
4
- module AfterShip
5
- module V3
6
- class Base
7
- class AfterShipError < StandardError;
8
- end
9
- attr_reader :http_verb_method, :end_point, :query, :body
10
-
11
- def initialize(http_verb_method, end_point, query = {}, body = {})
12
- @http_verb_method = http_verb_method
13
- @end_point = end_point
14
- @query = query
15
- @body = body
16
-
17
- @client = HTTPClient.new
18
- end
19
-
20
- def call
21
- header = {'aftership-api-key' => AfterShip.api_key, 'Content-Type' => 'application/json'}
22
-
23
- parameters = {
24
- :query => query,
25
- :body => body.to_json,
26
- :header => header
27
- }
28
-
29
- response = @client.send(http_verb_method, url, parameters)
30
-
31
- if response.body
32
- JSON.parse(response.body)
33
- else
34
- raise(AfterShipError.new('response is nil'))
35
- end
36
-
37
- end
38
-
39
- private
40
-
41
- def url
42
- "#{AfterShip::URL}/v3/#{end_point.to_s}"
43
- end
44
-
45
- end
46
- end
47
- end
@@ -1,21 +0,0 @@
1
- require File.dirname(__FILE__) + '/base'
2
-
3
- module AfterShip
4
- module V3
5
- class Courier < AfterShip::V3::Base
6
-
7
- def self.get
8
- new(:get, 'couriers').call
9
- end
10
-
11
- def self.detect(tracking_number = '')
12
- if tracking_number.empty?
13
- raise ArgumentError.new('tracking_number is required.')
14
- else
15
- new(:get, "couriers/detect/#{tracking_number}").call
16
- end
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,17 +0,0 @@
1
- require File.dirname(__FILE__) + '/base'
2
-
3
- module AfterShip
4
- module V3
5
- class LastCheckpoint < AfterShip::V3::Base
6
-
7
- def self.get(slug = '', tracking_number = '')
8
- if slug.empty? || tracking_number.empty?
9
- raise ArgumentError.new('slug and tracking_number are required.')
10
- else
11
- new(:get, "last_checkpoint/#{slug}/#{tracking_number}").call
12
- end
13
- end
14
-
15
- end
16
- end
17
- end
@@ -1,61 +0,0 @@
1
- require File.dirname(__FILE__) + '/base'
2
-
3
- module AfterShip
4
- module V3
5
- class Tracking < AfterShip::V3::Base
6
-
7
- #POST /trackings
8
- def self.create(tracking_number, params = {})
9
- if tracking_number.empty?
10
- raise ArgumentError.new('tracking_number is required.')
11
- else
12
- query_hash = {:tracking_number => tracking_number}
13
- query_hash.merge!(params)
14
- body = {:tracking => query_hash}
15
- new(:post, 'trackings', {}, body).call
16
- end
17
- end
18
-
19
- #DELETE /trackings/:slug/:tracking_number
20
- def self.delete(slug, tracking_number)
21
- if slug.empty? || tracking_number.empty?
22
- raise ArgumentError.new('slug and tracking_number are required.')
23
- end
24
- new(:delete, "trackings/#{slug}/#{tracking_number}").call
25
- end
26
-
27
- #GET /trackings
28
- def self.get_multi(params = {})
29
- new(:get, 'trackings', params).call
30
- end
31
-
32
- #GET /trackings/:slug/:tracking_number
33
- def self.get(slug, tracking_number, params = {})
34
- if slug.empty? || tracking_number.empty?
35
- raise ArgumentError.new('slug and tracking_number are required.')
36
- end
37
- new(:get, "trackings/#{slug}/#{tracking_number}", params).call
38
- end
39
-
40
- #PUT /trackings/:slug/:tracking_number
41
- def self.update(slug, tracking_number, params = {})
42
- if slug.empty? || tracking_number.empty?
43
- raise ArgumentError.new('slug and tracking_number are required.')
44
- end
45
- body = {:tracking => params}
46
- new(:put, "trackings/#{slug}/#{tracking_number}", {}, body).call
47
- end
48
-
49
- #POST /trackings/:slug/:tracking_number/reactivate
50
- def self.reactivate(slug, tracking_number)
51
- puts 'This method will be deprecate in AfterShipV4'
52
-
53
- if slug.empty? || tracking_number.empty?
54
- raise ArgumentError.new('slug and tracking_number are required.')
55
- end
56
- new(:post, "trackings/#{slug}/#{tracking_number}/reactivate").call
57
- end
58
-
59
- end
60
- end
61
- end