Class: Etracking::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/etracking/client.rb

Overview

API Client of eTracking SDK for Ruby

@client ||= Etracking::Client.new do |config|
   config.api_key = ENV["etracking_api_key"]
   config.key_secret = ENV["etracking_key_secret"]
   config.language = ENV["etracking_language"] || 'TH'
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) {|_self| ... } ⇒ Etracking::Client

Initialize a new client.

Parameters:

  • options (Hash) (defaults to: {})

Yields:

  • (_self)

Yield Parameters:



23
24
25
26
27
28
# File 'lib/etracking/client.rb', line 23

def initialize(options = {})
  options.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
  yield(self) if block_given?
end

Instance Attribute Details

#api_keyObject

@return [String]



17
18
19
# File 'lib/etracking/client.rb', line 17

def api_key
  @api_key
end

#key_secretObject

@return [String]



17
18
19
# File 'lib/etracking/client.rb', line 17

def key_secret
  @key_secret
end

#languageObject

@return [String]



17
18
19
# File 'lib/etracking/client.rb', line 17

def language
  @language
end

Instance Method Details

#alpha_fast(tracking_number) ⇒ Object



99
100
101
# File 'lib/etracking/client.rb', line 99

def alpha_fast(tracking_number)
  rest_api('/alpha_fast', payload_tracking_number(tracking_number))
end

#auto_detect(tracking_number) ⇒ Object



55
56
57
# File 'lib/etracking/client.rb', line 55

def auto_detect(tracking_number)
  rest_api('/auto_detect', payload_tracking_number(tracking_number))
end

#bee_express(tracking_number) ⇒ Object



123
124
125
# File 'lib/etracking/client.rb', line 123

def bee_express(tracking_number)
  rest_api('/bee_express', payload_tracking_number(tracking_number))
end

#best_express(tracking_number) ⇒ Object



103
104
105
# File 'lib/etracking/client.rb', line 103

def best_express(tracking_number)
  rest_api('/best_express', payload_tracking_number(tracking_number))
end

#cj_logistics(tracking_number) ⇒ Object



107
108
109
# File 'lib/etracking/client.rb', line 107

def cj_logistics(tracking_number)
  rest_api('/cj_logistics', payload_tracking_number(tracking_number))
end

#dhl_express(tracking_number) ⇒ Object



67
68
69
# File 'lib/etracking/client.rb', line 67

def dhl_express(tracking_number)
  rest_api('/dhl_express', payload_tracking_number(tracking_number))
end

#endpointObject



30
31
32
# File 'lib/etracking/client.rb', line 30

def endpoint
  'https://api.etrackings.com/v2/tracks'
end

#flash_express(tracking_number) ⇒ Object



71
72
73
# File 'lib/etracking/client.rb', line 71

def flash_express(tracking_number)
  rest_api('/flash_express', payload_tracking_number(tracking_number))
end

#inter_express(tracking_number) ⇒ Object



127
128
129
# File 'lib/etracking/client.rb', line 127

def inter_express(tracking_number)
  rest_api('/inter_express', payload_tracking_number(tracking_number))
end

#jt_express(tracking_number) ⇒ Object



75
76
77
# File 'lib/etracking/client.rb', line 75

def jt_express(tracking_number)
  rest_api('/jt_express', payload_tracking_number(tracking_number))
end

#kerry_express(tracking_number) ⇒ Object



79
80
81
# File 'lib/etracking/client.rb', line 79

def kerry_express(tracking_number)
  rest_api('/kerry_express', payload_tracking_number(tracking_number))
end

#lazada_express(tracking_number) ⇒ Object



83
84
85
# File 'lib/etracking/client.rb', line 83

def lazada_express(tracking_number)
  rest_api('/lazada_express', payload_tracking_number(tracking_number))
end

#nim_express(tracking_number) ⇒ Object



119
120
121
# File 'lib/etracking/client.rb', line 119

def nim_express(tracking_number)
  rest_api('/nim_express', payload_tracking_number(tracking_number))
end

#ninja_van(tracking_number) ⇒ Object



115
116
117
# File 'lib/etracking/client.rb', line 115

def ninja_van(tracking_number)
  rest_api('/ninja_van', payload_tracking_number(tracking_number))
end

#payload_tracking_number(tracking_number) ⇒ Object



149
150
151
152
153
# File 'lib/etracking/client.rb', line 149

def payload_tracking_number(tracking_number)
  {
    tracking_number: tracking_number
  }
end

#payload_with_courier_and_tracking_number(courier, tracking_number) ⇒ Object



142
143
144
145
146
147
# File 'lib/etracking/client.rb', line 142

def payload_with_courier_and_tracking_number(courier, tracking_number)
  {
    courier: courier,
    tracking_number: tracking_number
  }
end

#payload_with_courier_and_tracking_numbers(courier, tracking_numbers) ⇒ Object



135
136
137
138
139
140
# File 'lib/etracking/client.rb', line 135

def payload_with_courier_and_tracking_numbers(courier, tracking_numbers)
  {
    courier: courier,
    tracking_numbers: tracking_numbers
  }
end

#rest_api(path, payload) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/etracking/client.rb', line 34

def rest_api(path, payload)
  api_key_required
  key_secret_required

  url = URI("#{endpoint}#{path}")

  https = Net::HTTP.new(url.host, url.port);
  https.use_ssl = true
  https.read_timeout = 12

  request = Net::HTTP::Post.new(url)
  request["etracking-api-key"] = api_key
  request["etracking-key-secret"] = key_secret
  request["accept-language"] = language || 'th'
  request["content-type"] = ["application/json", "text/plain"]
  request.body = payload.to_json
  response = https.request(request)

  JSON.parse(response.read_body, { symbolize_names: true } )
end

#scg_express(tracking_number) ⇒ Object



87
88
89
# File 'lib/etracking/client.rb', line 87

def scg_express(tracking_number)
  rest_api('/scg_express', payload_tracking_number(tracking_number))
end

#shopee_express(tracking_number) ⇒ Object



91
92
93
# File 'lib/etracking/client.rb', line 91

def shopee_express(tracking_number)
  rest_api('/shopee_express', payload_tracking_number(tracking_number))
end

#speed_d(tracking_number) ⇒ Object



111
112
113
# File 'lib/etracking/client.rb', line 111

def speed_d(tracking_number)
  rest_api('/speed_d', payload_tracking_number(tracking_number))
end

#thailand_post(tracking_number) ⇒ Object



95
96
97
# File 'lib/etracking/client.rb', line 95

def thailand_post(tracking_number)
  rest_api('/thailand_post', payload_tracking_number(tracking_number))
end

#tnt_express(tracking_number) ⇒ Object



131
132
133
# File 'lib/etracking/client.rb', line 131

def tnt_express(tracking_number)
  rest_api('/tnt_express', payload_tracking_number(tracking_number))
end

#track(courier, tracking_number) ⇒ Object



63
64
65
# File 'lib/etracking/client.rb', line 63

def track(courier, tracking_number)
  rest_api('/find', payload_with_courier_and_tracking_number(courier, tracking_number))
end

#tracks(courier, tracking_numbers = []) ⇒ Object



59
60
61
# File 'lib/etracking/client.rb', line 59

def tracks(courier, tracking_numbers = [])
  rest_api('', payload_with_courier_and_tracking_numbers(courier, tracking_number))
end