aftership 1.0.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []