aftership 1.0.3

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTU5ZDMxZjI0NWY3NWNkYjgxODM5YWM5NzMzZGY2YjIwOTliNzg2YQ==
5
+ data.tar.gz: !binary |-
6
+ NDgyNGRlZThlNmViMzhlN2VjOWE5YmJmZTBmY2UxNzhlODM0YTIxZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ODgzMmY3NjBkMzU4ZDVkNGM5ODliYWZjNGQyNThkOWQ0YjdmZjg0Y2QwYzFi
10
+ Mjc0NTk4YzY5OTk2NzYzMzRjZDE0NjljNWFiMDYyMzcyMzZmOTQzM2IzY2M1
11
+ YzAyZjk1YWUzYTBkZWI5ODkwNjA5NmU5YjdjNGM1MDhhMjA0NmI=
12
+ data.tar.gz: !binary |-
13
+ ZWJhYzYxM2ZlZjA5YTFlMzJlMzhiMDkyMjdmZjk0MWFmMWJjOGUxMjBkNTIy
14
+ MTI5M2NjYzE3ZTE5ZmIwYmU5ZTVmMTkwODBkMTdiNDI5YmQ5YjU5NTcwODY3
15
+ ZWRkMjgyNmM0YmRlY2QyMDExMDJkZThkYzFmODc5MDNiNmZmMzU=
data/lib/aftership.rb ADDED
@@ -0,0 +1,14 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ require "aftership/courier"
4
+ require "aftership/tracking"
5
+
6
+ module AfterShip
7
+ class << self;
8
+ attr_accessor :api_key
9
+ end
10
+
11
+ VERSION = "2"
12
+ URL = "https://api.aftership.com"
13
+ FORMAT = "json"
14
+ end
@@ -0,0 +1,37 @@
1
+ require 'httpi'
2
+ require 'json'
3
+
4
+ HTTPI.log = false
5
+
6
+ module AfterShip
7
+ module V2
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
+
17
+ opt = {}
18
+ args.last.each {|k, v| v.is_a?(Array) ? opt["#{k}[]"] = v : opt[k] = v}
19
+ req_body.merge!(opt)
20
+ end
21
+
22
+ request = HTTPI::Request.new(url)
23
+ request.body = req_body
24
+ response = HTTPI.send(http_verb_method.to_sym, request)
25
+
26
+ if response.nil?
27
+ raise(AfterShipError.new("response is nil"))
28
+ else
29
+ return JSON.parse(response.raw_body)
30
+ end
31
+ end
32
+
33
+ class AfterShipError < StandardError;
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
3
+ module AfterShip
4
+ module V2
5
+ class Courier < AfterShip::V2::Base
6
+ def self.get_couriers
7
+ call(:get, "couriers")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
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")
9
+ end
10
+
11
+ query_hash = {:tracking_number => tracking_number, :courier => courier}
12
+ query_hash.merge!(opt)
13
+ call(:post, "trackings", query_hash)
14
+ end
15
+
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")
19
+ end
20
+
21
+ query_hash = {:tracking_number => tracking_number, :courier => courier}
22
+ call(:get, "trackings", query_hash)
23
+ end
24
+ end
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aftership
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
5
+ platform: ruby
6
+ authors:
7
+ - LU Wenlong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-06-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httpi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Developed for easy integration with AfterShip
28
+ email: wllu@aftership.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/aftership.rb
34
+ - lib/aftership/base.rb
35
+ - lib/aftership/courier.rb
36
+ - lib/aftership/tracking.rb
37
+ homepage: http://www.aftership.com
38
+ licenses: []
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.8.7
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements:
55
+ - none
56
+ rubyforge_project:
57
+ rubygems_version: 2.0.3
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Formerly known as aftership_ruby and a wrapper for AfterShip API
61
+ test_files: []