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

#thailand_post_api_keyObject

@return [String]



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

def thailand_post_api_key
  @thailand_post_api_key
end

Instance Method Details

#dhl_express(tracking_number) ⇒ Object



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

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://etrackings.com/api/v2/tracks/'
end

#flash_express(tracking_number) ⇒ Object



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

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

#headers(request) ⇒ Object



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

def headers(request)
  api_key_required
  key_secret_required

  request['etracking-api-key'] = api_key
  request['etracking-key-secret'] = key_secret
  request['accept-language'] =  language || 'TH'
  request['content-type'] = 'application/json'

  request
end

#jt_express(tracking_number) ⇒ Object



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

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

#kerry_express(tracking_number) ⇒ Object



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

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

#lazada_express(tracking_number) ⇒ Object



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

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

#payload_tracking_number(tracking_number) ⇒ Object



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

def payload_tracking_number(tracking_number)
  {
    tracking_number: tracking_number
  }
end

#payload_with_service_and_tracking_number(service_name, tracking_number) ⇒ Object



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

def payload_with_service_and_tracking_number(service_name, tracking_number)
  {
    service_name: service_name,
    tracking_number: tracking_number
  }
end

#rest_api(path, payload) ⇒ Object



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

def rest_api(path, payload)
  url = URI("#{endpoint}#{path}")

  http = Net::HTTP.new(url.host, url.port);
  request = Net::HTTP::Post.new(url)
  request = headers(request)
  request.body = payload.to_json

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

#scg_express(tracking_number) ⇒ Object



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

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

#shopee_express(tracking_number) ⇒ Object



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

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

#thailand_post(tracking_number) ⇒ Object



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

def thailand_post(tracking_number)
  thailand_post_api_key

  api('thailand_post', payload_tracking_number(tracking_number))
end

#track(service_name, tracking_number) ⇒ Object



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

def track(service_name, tracking_number)
  rest_api('/find', payload_with_service_and_tracking_number(service_name, tracking_number))
end