aftership 3.0.3 → 4.0.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: 2fa12d3da913fcd88b6191c4d3c285e14bbb3d00
4
- data.tar.gz: 374b2612061e234145d99a5f4a7b91fffbfc51ea
3
+ metadata.gz: 95e99df0b3b1522828ddaf64e07858cd9d228f4a
4
+ data.tar.gz: c231c24fadd60141df19f072cfa2e695c779d34f
5
5
  SHA512:
6
- metadata.gz: 056e48060167b9d88da6d4406cc1ef415efa7473590201f59d65377f4719f3084a6f508efd5de153079d2f05d05ee76f9f7f668a23305d2524d4886f39fad158
7
- data.tar.gz: ebd2adcbec8f5f8ad16a66d3cde0dd8cc63fb9d71c765093e88ba54cd01cc26eebc31fc58c303271397a9518bc33251d0694a453f2d9366a865b01505281e735
6
+ metadata.gz: 38a094cd9ee88231bfccb13c34e8c14d53b236757f273b5ab4e0212aa637cfd23b8e2c7a7239614f45ae01de44a2781556c70020eb73782e93ac27d371d5029c
7
+ data.tar.gz: 51093f58e32cd3c1cf83a074371d8a79fbecb09ff1ed0dcbfe367162b431f170fd0999d4686c4dfae7189885f241adb86259569e1d90ed453096fff48db79da5
data/README.md ADDED
@@ -0,0 +1,96 @@
1
+ ## aftership-ruby
2
+
3
+ Ruby Gem for AfterShip API.
4
+
5
+ This extension helps developers to integrate with AfterShip easily.
6
+
7
+ ## About AfterShip
8
+
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
+
11
+ ### Changes
12
+ * 2014-10-28 Pump version to 4.0.0, support latest v4 api
13
+ * Adding deprecation messages
14
+ * Adding new api endpoints
15
+ * Make all changes regarding new API version
16
+
17
+ * 2014-04-11 Pump version to 3.0.1, support latest v3 api
18
+ * Removed the debug message
19
+
20
+ * 2014-04-11 Pump version to 3.0.0, support latest v3 api
21
+ * Change license to MIT
22
+
23
+
24
+ ## Installation
25
+
26
+ 1. Add the following line to your application's Gemfile
27
+
28
+ ```
29
+ gem "aftership", "~> 3.0"
30
+ ```
31
+
32
+ 2. Run bundler
33
+
34
+ ```
35
+ bundle install
36
+ ```
37
+
38
+
39
+ ## Configuration
40
+
41
+ 1. Before you begin
42
+
43
+ You'll need to have a AfterShip account
44
+
45
+ http://www.aftership.com
46
+
47
+
48
+ 2. Setup the API Key
49
+
50
+ You can retrieve your api key at
51
+
52
+ https://www.aftership.com/apps/api
53
+
54
+
55
+ ## Usage
56
+
57
+ 1. Setup
58
+ Before using API, please include the gem in your script
59
+
60
+ ```
61
+ require 'rubygems'
62
+ require 'aftership'
63
+ ```
64
+
65
+ You should set you API key before making any request to AfterShip.
66
+
67
+ ```
68
+ AfterShip.api_key = 'YOUR_API_KEY' #Replace "YOUR_API_KEY" to your AfterShip api key.
69
+ ```
70
+
71
+
72
+ 2. Coding
73
+
74
+ ```
75
+ require('aftership')
76
+ AfterShip.api_key = 'YOUR_API_KEY'
77
+
78
+ AfterShip::V3::Courier.get
79
+ AfterShip::V3::Courier.detect('1ZA6F598D992381375')
80
+
81
+ AfterShip::V3::Tracking.create('1ZA6F598D992381375', {"emails"=>["a@abcd.com", "asdfasdfs@gmail.com"]})
82
+ AfterShip::V3::Tracking.get('ups', '1ZA6F598D992381375')
83
+ AfterShip::V3::Tracking.get_multi()
84
+ AfterShip::V3::Tracking.delete('ups', '1ZA6F598D992381375')
85
+ AfterShip::V3::Tracking.update('ups', '1ZA6F598D992381375', {:title=>"Testing"})
86
+ AfterShip::V3::Tracking.reactivate('ups', '1ZA6F598D992381375')
87
+
88
+ AfterShip::V3::LastCheckpoint.get('ups', '1ZA6F598D992381375')
89
+
90
+ ```
91
+
92
+
93
+
94
+ ## The License (MIT)
95
+
96
+ Released under the MIT license. See the LICENSE file for the complete wording.
data/lib/aftership.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
- require "aftership/courier"
4
- require "aftership/tracking"
5
- require "aftership/last_checkpoint"
3
+ require "aftership/v3/courier"
4
+ require "aftership/v3/tracking"
5
+ require "aftership/v3/last_checkpoint"
6
+
7
+ require "aftership/v4/courier"
8
+ require "aftership/v4/tracking"
9
+ require "aftership/v4/last_checkpoint"
6
10
 
7
11
  module AfterShip
8
12
  class << self;
@@ -10,4 +14,4 @@ module AfterShip
10
14
  end
11
15
 
12
16
  URL = "https://api.aftership.com"
13
- end
17
+ end
@@ -38,4 +38,4 @@ module AfterShip
38
38
  end
39
39
  end
40
40
  end
41
- end
41
+ end
File without changes
@@ -48,6 +48,8 @@ module AfterShip
48
48
 
49
49
  #POST /trackings/:slug/:tracking_number/reactivate
50
50
  def self.reactivate(slug, tracking_number)
51
+ puts "This method will be deprecate in AfterShipV4"
52
+
51
53
  if slug.empty? || tracking_number.empty?
52
54
  raise ArgumentError.new("slug and tracking_number are required.")
53
55
  end
@@ -56,4 +58,4 @@ module AfterShip
56
58
 
57
59
  end
58
60
  end
59
- end
61
+ end
@@ -0,0 +1,54 @@
1
+ require 'httpi'
2
+ require 'json'
3
+
4
+ HTTPI.log = false
5
+
6
+ module AfterShip
7
+ module V4
8
+ class Base
9
+ class AfterShipError < StandardError; end
10
+ attr_reader :http_verb_method, :end_point, :params, :body
11
+
12
+ def initialize(http_verb_method, end_point, params = {}, body = {})
13
+ @body = body
14
+ @params = params
15
+ @end_point = end_point
16
+ @http_verb_method = http_verb_method
17
+ end
18
+
19
+ def call
20
+ validate
21
+ if response = HTTPI.send(http_verb_method.to_sym, request)
22
+ return JSON.parse(response.raw_body)
23
+ else
24
+ raise(AfterShipError.new("response is nil"))
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def validate
31
+ body.each do |key, value|
32
+ if %w(emails smses).include?(key.to_s) && !value.is_a?(Array)
33
+ HTTPI.logger.warn("the #{key} field should be an array")
34
+ end
35
+ end
36
+ end
37
+
38
+ def url
39
+ api_url = "#{AfterShip::URL}/v4/#{end_point.to_s}"
40
+ if !params.empty?
41
+ api_url += '?' + Rack::Utils.build_query(params)
42
+ end
43
+ api_url
44
+ end
45
+
46
+ def request
47
+ req = HTTPI::Request.new(url)
48
+ req.headers = {"aftership-api-key" => AfterShip.api_key, 'Content-Type' => 'application/json'}
49
+ req.body = body.to_json
50
+ req
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
3
+ module AfterShip
4
+ module V4
5
+ class Courier < AfterShip::V4::Base
6
+
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
+
13
+ #GET /couriers/all
14
+ #Return a list of all couriers.
15
+ def self.get
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_number = '')
22
+ if tracking_number.empty?
23
+ raise ArgumentError.new("tracking_number is required.")
24
+ else
25
+ new(:get, "couriers/detect", {'tracking_number' => tracking_number}).call
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
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
17
+ end
@@ -0,0 +1,70 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
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("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
+ 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
+ #POST /trackings/batch
28
+ def self.create_in_batch(tracking_numbers)
29
+ raise ArgumentError.new("Not implemented yet")
30
+ end
31
+
32
+ #DELETE /trackings/:slug/:tracking_number
33
+ def self.delete(slug, tracking_number)
34
+ if slug.empty? || tracking_number.empty?
35
+ raise ArgumentError.new("slug and tracking_number are required.")
36
+ end
37
+ new(:delete, "trackings/#{slug}/#{tracking_number}").call
38
+ end
39
+
40
+ #GET /trackings/:slug/:tracking_number
41
+ def self.get(slug, tracking_number, params = {})
42
+ if slug.empty? || tracking_number.empty?
43
+ raise ArgumentError.new("slug and tracking_number are required.")
44
+ end
45
+ new(:get, "trackings/#{slug}/#{tracking_number}", params).call
46
+ end
47
+
48
+ #GET /trackings
49
+ #1_000_000 results is a limit
50
+ def self.get_all(params = {})
51
+ new(:get, "trackings", params).call
52
+ end
53
+
54
+ #PUT /trackings/:slug/:tracking_number
55
+ def self.update(slug, tracking_number, params = {})
56
+ if slug.empty? || tracking_number.empty?
57
+ raise ArgumentError.new("slug and tracking_number are required.")
58
+ end
59
+ body = {"tracking" => params}
60
+ new(:put, "trackings/#{slug}/#{tracking_number}", {}, body).call
61
+ end
62
+
63
+ #Deprecated
64
+ #POST /trackings/:slug/:tracking_number/reactivate
65
+ def self.reactivate(slug, tracking_number)
66
+ raise StandartError.new("This method is deprecated please use 'retrack' instead")
67
+ end
68
+ end
69
+ end
70
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aftership
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AfterShip.com
8
+ - Alex Topalov
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-10-29 00:00:00.000000000 Z
12
+ date: 2014-10-31 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: httpi
@@ -24,17 +25,66 @@ dependencies:
24
25
  - - ~>
25
26
  - !ruby/object:Gem::Version
26
27
  version: 2.2.7
28
+ - !ruby/object:Gem::Dependency
29
+ name: rubyntlm
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 0.4.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: 0.4.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: 2.14.1
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 2.14.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: pry
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
27
70
  description: Developed for easy integration with AfterShip
28
- email: support@aftership.com
71
+ email:
72
+ - support@aftership.com
73
+ - me@alextopalov.com
29
74
  executables: []
30
75
  extensions: []
31
76
  extra_rdoc_files: []
32
77
  files:
78
+ - lib/aftership/v3/base.rb
79
+ - lib/aftership/v3/courier.rb
80
+ - lib/aftership/v3/last_checkpoint.rb
81
+ - lib/aftership/v3/tracking.rb
82
+ - lib/aftership/v4/base.rb
83
+ - lib/aftership/v4/courier.rb
84
+ - lib/aftership/v4/last_checkpoint.rb
85
+ - lib/aftership/v4/tracking.rb
33
86
  - lib/aftership.rb
34
- - lib/aftership/base.rb
35
- - lib/aftership/courier.rb
36
- - lib/aftership/tracking.rb
37
- - lib/aftership/last_checkpoint.rb
87
+ - README.md
38
88
  homepage: https://www.aftership.com
39
89
  licenses:
40
90
  - MIT
@@ -60,5 +110,5 @@ rubygems_version: 2.0.14
60
110
  signing_key:
61
111
  specification_version: 4
62
112
  summary: Formerly known as aftership_ruby and a wrapper for AfterShip API. Support
63
- the latest V3 API
113
+ the latest V3/V4 API
64
114
  test_files: []