etrackings 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b71f64036cd7a473dc78696a928dc8f926e1ceba32d96bcec3d81dc5adad217a
4
+ data.tar.gz: 3be5ca1b6f05b6e62f6dfb21ad2f9c735fcd283128a155ddbe6b0a50e7ce5962
5
+ SHA512:
6
+ metadata.gz: 564b3c301ad5c250a431695b42a43c9dd08befb863112e358a8f21ce84095a070df8a0c483b272d57bad90c7eb711a01aeb412b30fc87d0b1e4975d233f04597
7
+ data.tar.gz: bc45b0f4758ba89b832eac36e750e48be94d4dd7f33d9bd05428643d750842f7599036d056e4b3b4711af5fa89b936d168c0c3d1b05d13666a7f6a00db1d4629
@@ -0,0 +1,12 @@
1
+ require 'etrackings'
2
+
3
+ def client
4
+ @client ||= Etrackings::Client.new do |config|
5
+ config.api_key = 'l72f8c215460ac4c2ea72702c3a48b5c62'
6
+ config.key_secret = '01a3c4687d6a4f93a44e90d33911ba67'
7
+ config.language = 'TH'
8
+ config.is_develop = true
9
+ end
10
+ end
11
+
12
+ puts "Test"
@@ -0,0 +1 @@
1
+ require 'etrackings/client'
@@ -0,0 +1,157 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ module Etrackings
6
+ # API Client of ETrackings SDK for Ruby
7
+ #
8
+ # @client ||= Etrackings::Client.new do |config|
9
+ # config.api_key = ENV["etrackings_api_key"]
10
+ # config.key_secret = ENV["etrackings_key_secret"]
11
+ # config.language = ENV["etrackings_language"] || 'TH'
12
+ # end
13
+
14
+ class Client
15
+ # @return [String]
16
+ attr_accessor :api_key, :key_secret, :language
17
+
18
+ # Initialize a new client.
19
+ #
20
+ # @param options [Hash]
21
+ # @return [Etracking::Client]
22
+ def initialize(options = {})
23
+ options.each do |key, value|
24
+ instance_variable_set("@#{key}", value)
25
+ end
26
+ yield(self) if block_given?
27
+ end
28
+
29
+ def endpoint
30
+ 'https://fast.etrackings.com/v3/tracks'
31
+ end
32
+
33
+ def rest_api(path, payload)
34
+ api_key_required
35
+ key_secret_required
36
+
37
+ url = URI("#{endpoint}#{path}")
38
+
39
+ https = Net::HTTP.new(url.host, url.port);
40
+ https.use_ssl = true
41
+ https.read_timeout = 12
42
+
43
+ request = Net::HTTP::Post.new(url)
44
+ request["Etrackings-api-key"] = api_key
45
+ request["Etrackings-key-secret"] = key_secret
46
+ request["Accept-Language"] = language || 'th'
47
+ request["Content-Type"] = ["application/json", "text/plain"]
48
+ request.body = payload.to_json
49
+ response = https.request(request)
50
+
51
+ JSON.parse(response.read_body, { symbolize_names: true })
52
+ end
53
+
54
+ def track(courier, tracking_no)
55
+ rest_api('/find', payload_with_courier_and_tracking_no(courier, tracking_no))
56
+ end
57
+
58
+ def dhl_express(tracking_no)
59
+ rest_api('/dhl-express', payload_tracking_no(tracking_no))
60
+ end
61
+
62
+ def flash_express(tracking_no)
63
+ rest_api('/flash-express', payload_tracking_no(tracking_no))
64
+ end
65
+
66
+ def jt_express(tracking_no)
67
+ rest_api('/jt-express', payload_tracking_no(tracking_no))
68
+ end
69
+
70
+ def kerry_express(tracking_no)
71
+ rest_api('/kerry-express', payload_tracking_no(tracking_no))
72
+ end
73
+
74
+ def scg_express(tracking_no)
75
+ rest_api('/scg-express', payload_tracking_no(tracking_no))
76
+ end
77
+
78
+ def shopee_express(tracking_no)
79
+ rest_api('/shopee-express', payload_tracking_no(tracking_no))
80
+ end
81
+
82
+ def thailand_post(tracking_no)
83
+ rest_api('/thailand-post', payload_tracking_no(tracking_no))
84
+ end
85
+
86
+ def alpha_fast(tracking_no)
87
+ rest_api('/alpha-fast', payload_tracking_no(tracking_no))
88
+ end
89
+
90
+ def best_express(tracking_no)
91
+ rest_api('/best-express', payload_tracking_no(tracking_no))
92
+ end
93
+
94
+ def cj_logistics(tracking_no)
95
+ rest_api('/cj-logistics', payload_tracking_no(tracking_no))
96
+ end
97
+
98
+ def speed_d(tracking_no)
99
+ rest_api('/speed-d', payload_tracking_no(tracking_no))
100
+ end
101
+
102
+ def ninja_van(tracking_no)
103
+ rest_api('/ninja-van', payload_tracking_no(tracking_no))
104
+ end
105
+
106
+ def nim_express(tracking_no)
107
+ rest_api('/nim-express', payload_tracking_no(tracking_no))
108
+ end
109
+
110
+ def bee_express(tracking_no)
111
+ rest_api('/bee-express', payload_tracking_no(tracking_no))
112
+ end
113
+
114
+ def inter_express(tracking_no)
115
+ rest_api('/inter-express', payload_tracking_no(tracking_no))
116
+ end
117
+
118
+ def tnt_express(tracking_no)
119
+ rest_api('/tnt-express', payload_tracking_no(tracking_no))
120
+ end
121
+
122
+ def tp_logistics(tracking_no)
123
+ rest_api('/tp-logistics', payload_tracking_no(tracking_no))
124
+ end
125
+
126
+ def ups(tracking_no)
127
+ rest_api('/ups', payload_tracking_no(tracking_no))
128
+ end
129
+
130
+ def business_idea_transport(tracking_no)
131
+ rest_api('/business-idea-transport', payload_tracking_no(tracking_no))
132
+ end
133
+
134
+ def payload_with_courier_and_tracking_no(courier, tracking_no)
135
+ {
136
+ courier: courier,
137
+ trackingNo: tracking_no
138
+ }
139
+ end
140
+
141
+ def payload_tracking_no(tracking_no)
142
+ {
143
+ trackingNo: tracking_no
144
+ }
145
+ end
146
+
147
+ private
148
+
149
+ def api_key_required
150
+ raise ArgumentError, '`api_key` is not configured' unless api_key
151
+ end
152
+
153
+ def key_secret_required
154
+ raise ArgumentError, '`key_secret` is not configured' unless key_secret
155
+ end
156
+ end
157
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: etrackings
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Saharak Manoo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.11'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.11'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.8'
83
+ description: For ETrackings API
84
+ email: Saharakmanoo@outlook.com
85
+ executables:
86
+ - etrackings
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - bin/etrackings
91
+ - lib/etrackings.rb
92
+ - lib/etrackings/client.rb
93
+ homepage: https://github.com/Saharak-Dove/etracking-ruby
94
+ licenses:
95
+ - MIT
96
+ metadata: {}
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubygems_version: 3.2.3
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: For ETrackings API
116
+ test_files: []