etrackings 3.0.0

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.
@@ -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: []