aftership 1.0.3

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