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:



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

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]



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

def api_key
  @api_key
end

#key_secretObject

@return [String]



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

def key_secret
  @key_secret
end

#languageObject

@return [String]



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

def language
  @language
end

Instance Method Details

#api(service, tracking_number) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/etracking/client.rb', line 56

def api(service, tracking_number)
  rest_client_api(
    "#{endpoint}/api/v2/tracks/#{service}", 
    "post", 
    headers, 
    payload_tracking_number(tracking_number)
  )
end

#dhl_express(tracking_number) ⇒ Object



65
66
67
# File 'lib/etracking/client.rb', line 65

def dhl_express(tracking_number)
  api('dhl_express', tracking_number)
end

#endpointObject



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

def endpoint
  'http://165.22.52.6'
end

#flash_express(tracking_number) ⇒ Object



69
70
71
# File 'lib/etracking/client.rb', line 69

def flash_express(tracking_number)
  api('flash_express', tracking_number)
end

#headersObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/etracking/client.rb', line 44

def headers
  api_key_required
  key_secret_required

  {
    etracking_api_key: api_key,
    etracking_key_secret: key_secret,
    content_type: 'application/json', 
    accept_language: language || 'TH'
  }
end

#jt_express(tracking_number) ⇒ Object



73
74
75
# File 'lib/etracking/client.rb', line 73

def jt_express(tracking_number)
  api('jt_express', tracking_number)
end

#kerry_express(tracking_number) ⇒ Object



77
78
79
# File 'lib/etracking/client.rb', line 77

def kerry_express(tracking_number)
  api('kerry_express', tracking_number)
end

#lazada_express(tracking_number) ⇒ Object



81
82
83
# File 'lib/etracking/client.rb', line 81

def lazada_express(tracking_number)
  api('lazada_express', tracking_number)
end

#payload_tracking_number(tracking_number) ⇒ Object

api(‘thailand_post’, tracking_number) end



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

def payload_tracking_number(tracking_number)
  {
    tracking_number: tracking_number
  }
end

#rest_client_api(url, method, headers, payload) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/etracking/client.rb', line 33

def rest_client_api(url, method, headers, payload)
  response = RestClient::Request.new({
    url: url,
    method: method.to_sym,
    headers: headers,
    payload: payload.to_json
  }).execute do |response, request, result|
    return JSON.parse(response.to_str)
  end
end

#scg_express(tracking_number) ⇒ Object



85
86
87
# File 'lib/etracking/client.rb', line 85

def scg_express(tracking_number)
  api('scg_express', tracking_number)
end

#shopee_express(tracking_number) ⇒ Object



89
90
91
# File 'lib/etracking/client.rb', line 89

def shopee_express(tracking_number)
  api('shopee_express', tracking_number)
end