aftership 1.0.3 → 3.0.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTU5ZDMxZjI0NWY3NWNkYjgxODM5YWM5NzMzZGY2YjIwOTliNzg2YQ==
4
+ YzUzZTRkZWFkYWJlNjIyYmEwNzU0MWY3NTcyZTdiOTJmZDg4ODVkOA==
5
5
  data.tar.gz: !binary |-
6
- NDgyNGRlZThlNmViMzhlN2VjOWE5YmJmZTBmY2UxNzhlODM0YTIxZA==
7
- !binary "U0hBNTEy":
6
+ NTU5ODdmOWVlZDdlMWM3NjI0ZTY1MWZlYzBlYTE0YTc1MDQ3OGVmYg==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- ODgzMmY3NjBkMzU4ZDVkNGM5ODliYWZjNGQyNThkOWQ0YjdmZjg0Y2QwYzFi
10
- Mjc0NTk4YzY5OTk2NzYzMzRjZDE0NjljNWFiMDYyMzcyMzZmOTQzM2IzY2M1
11
- YzAyZjk1YWUzYTBkZWI5ODkwNjA5NmU5YjdjNGM1MDhhMjA0NmI=
9
+ NmNiMjBhMmYzMTAzMjE3NDBhNGE5MDI5NGM2NDE2ODU0ODFjYjE2OWQxY2Ey
10
+ ZTgxZDI3ZDdhZWZhMTVhODJlZTU0NzYyNWY1ZjJkNTYwN2I2YzFlNDJmYjJj
11
+ ODk2ODRlNjFmMGY1NWU4YzQzYWNmYTdmMzY0MDhjNjgyM2U2ZmY=
12
12
  data.tar.gz: !binary |-
13
- ZWJhYzYxM2ZlZjA5YTFlMzJlMzhiMDkyMjdmZjk0MWFmMWJjOGUxMjBkNTIy
14
- MTI5M2NjYzE3ZTE5ZmIwYmU5ZTVmMTkwODBkMTdiNDI5YmQ5YjU5NTcwODY3
15
- ZWRkMjgyNmM0YmRlY2QyMDExMDJkZThkYzFmODc5MDNiNmZmMzU=
13
+ NGRmMjEzY2JlYmI4MGY4ZDAzNTE5OTUzZDM4ZWNlYmNmMzQ2NDJkYzUzZjNi
14
+ ZGVhNjE4MzM1NzQwMTc2NDc1YTQzNTY5OWI5NTY5NzM5ZTk3ZWZlYzgzY2Rj
15
+ NjM0ZWQ1MjI3ZjE0ZTFiNjNjODFkNjVjMGM4MDBmNDRhODNmM2Y=
@@ -2,13 +2,12 @@ $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  require "aftership/courier"
4
4
  require "aftership/tracking"
5
+ require "aftership/last_checkpoint"
5
6
 
6
7
  module AfterShip
7
8
  class << self;
8
9
  attr_accessor :api_key
9
10
  end
10
11
 
11
- VERSION = "2"
12
12
  URL = "https://api.aftership.com"
13
- FORMAT = "json"
14
13
  end
@@ -4,25 +4,31 @@ require 'json'
4
4
  HTTPI.log = false
5
5
 
6
6
  module AfterShip
7
- module V2
7
+ module V3
8
8
  class Base
9
- def self.call(http_verb_method, *args)
10
- url = "#{AfterShip::URL}/v#{AfterShip::VERSION}/#{args.first.to_s}.#{AfterShip::FORMAT}"
11
- req_body = {:api_key => AfterShip.api_key}
12
- if args.last.is_a?(Hash)
13
- args.last.each do |k, v|
14
- HTTPI.logger.warn("this field #{k} should be array") if %w(emails smses).include?(k.to_s) && !v.is_a?(Array)
15
- end
16
9
 
17
- opt = {}
18
- args.last.each {|k, v| v.is_a?(Array) ? opt["#{k}[]"] = v : opt[k] = v}
19
- req_body.merge!(opt)
10
+ def self.call(http_verb_method, end_point, params = {}, body = {})
11
+ url = "#{AfterShip::URL}/v3/#{end_point.to_s}"
12
+ unless params.empty?
13
+ url += '?' + Rack::Utils.build_query(params)
14
+ end
15
+
16
+ unless body.empty?
17
+ body.each do |k, v|
18
+ HTTPI.logger.warn("the #{k} field should be an array") if %w(emails smses).include?(k.to_s) && !v.is_a?(Array)
19
+ end
20
20
  end
21
21
 
22
22
  request = HTTPI::Request.new(url)
23
- request.body = req_body
23
+ request.headers = {"aftership-api-key" => AfterShip.api_key}
24
+ request.body = body.to_json
25
+
26
+ puts "request"
27
+ puts request.url
28
+
24
29
  response = HTTPI.send(http_verb_method.to_sym, request)
25
30
 
31
+ # different
26
32
  if response.nil?
27
33
  raise(AfterShipError.new("response is nil"))
28
34
  else
@@ -31,6 +37,7 @@ module AfterShip
31
37
  end
32
38
 
33
39
  class AfterShipError < StandardError;
40
+
34
41
  end
35
42
  end
36
43
  end
@@ -1,11 +1,21 @@
1
1
  require File.dirname(__FILE__) + '/base'
2
2
 
3
3
  module AfterShip
4
- module V2
5
- class Courier < AfterShip::V2::Base
6
- def self.get_couriers
4
+ module V3
5
+ class Courier < AfterShip::V3::Base
6
+
7
+ def self.get
7
8
  call(:get, "couriers")
8
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
+ call(:get, "couriers/detect/#{tracking_number}")
16
+ end
17
+ end
18
+
9
19
  end
10
20
  end
11
21
  end
@@ -0,0 +1,17 @@
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
+ call(:get, "last_checkpoint/#{slug}/#{tracking_number}")
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,26 +1,59 @@
1
1
  require File.dirname(__FILE__) + '/base'
2
2
 
3
3
  module AfterShip
4
- module V2
5
- class Tracking < AfterShip::V2::Base
6
- def self.create(tracking_number, courier, opt = {})
7
- if tracking_number.empty? || courier.empty?
8
- raise ArgumentError.new("both tracking_number and courier are necessary for this method call")
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("The tracking_number is required.")
11
+ else
12
+ query_hash = {:tracking_number => tracking_number}
13
+ query_hash.merge!(params)
14
+ body = {:tracking => query_hash}
15
+ call(:post, "trackings", {}, body)
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.")
9
23
  end
24
+ call(:delete, "trackings/#{slug}/#{tracking_number}")
25
+ end
10
26
 
11
- query_hash = {:tracking_number => tracking_number, :courier => courier}
12
- query_hash.merge!(opt)
13
- call(:post, "trackings", query_hash)
27
+ #GET /trackings
28
+ def self.get_multi(params = {})
29
+ call(:get, "trackings", params)
14
30
  end
15
31
 
16
- def self.get(tracking_number, courier)
17
- if tracking_number.empty? || courier.empty?
18
- raise ArgumentError.new("both tracking_number and courier are necessary for this method call")
32
+ #GET /trackings/:slug/:tracking_number
33
+ def self.get(slug, tracking_number)
34
+ if slug.empty? || tracking_number.empty?
35
+ raise ArgumentError.new("slug and tracking_number are required.")
19
36
  end
37
+ call(:get, "trackings/#{slug}/#{tracking_number}")
38
+ end
20
39
 
21
- query_hash = {:tracking_number => tracking_number, :courier => courier}
22
- call(:get, "trackings", query_hash)
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
+ call(:put, "trackings/#{slug}/#{tracking_number}", {}, body)
23
47
  end
48
+
49
+ #POST /trackings/:slug/:tracking_number/reactivate
50
+ def self.reactivate(slug, tracking_number)
51
+ if slug.empty? || tracking_number.empty?
52
+ raise ArgumentError.new("slug and tracking_number are required.")
53
+ end
54
+ call(:post, "trackings/#{slug}/#{tracking_number}/reactivate")
55
+ end
56
+
24
57
  end
25
58
  end
26
59
  end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aftership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - LU Wenlong
7
+ - AfterShip.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-27 00:00:00.000000000 Z
11
+ date: 2014-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '2.1'
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: '0'
26
+ version: '2.1'
27
27
  description: Developed for easy integration with AfterShip
28
- email: wllu@aftership.com
28
+ email: support@aftership.com
29
29
  executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
@@ -33,9 +33,11 @@ files:
33
33
  - lib/aftership.rb
34
34
  - lib/aftership/base.rb
35
35
  - lib/aftership/courier.rb
36
+ - lib/aftership/last_checkpoint.rb
36
37
  - lib/aftership/tracking.rb
37
- homepage: http://www.aftership.com
38
- licenses: []
38
+ homepage: https://www.aftership.com
39
+ licenses:
40
+ - MIT
39
41
  metadata: {}
40
42
  post_install_message:
41
43
  rdoc_options: []
@@ -54,8 +56,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
56
  requirements:
55
57
  - none
56
58
  rubyforge_project:
57
- rubygems_version: 2.0.3
59
+ rubygems_version: 2.2.2
58
60
  signing_key:
59
61
  specification_version: 4
60
- summary: Formerly known as aftership_ruby and a wrapper for AfterShip API
62
+ summary: Formerly known as aftership_ruby and a wrapper for AfterShip API. Support
63
+ the latest V3 API
61
64
  test_files: []