class Etracking::Client

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

Attributes

api_key[RW]

@return [String]

key_secret[RW]

@return [String]

language[RW]

@return [String]

Public Class Methods

new(options = {}) { |self| ... } click to toggle source

Initialize a new client.

@param options [Hash] @return [Etracking::Client]

# 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

Public Instance Methods

alpha_fast(tracking_number) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/etracking/client.rb, line 67
def dhl_express(tracking_number)
  rest_api('/dhl_express', payload_tracking_number(tracking_number))
end
endpoint() click to toggle source
# File lib/etracking/client.rb, line 30
def endpoint
  'https://api.etrackings.com/v2/tracks'
end
flash_express(tracking_number) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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 = []) click to toggle source
# File lib/etracking/client.rb, line 59
def tracks(courier, tracking_numbers = [])
  rest_api('', payload_with_courier_and_tracking_numbers(courier, tracking_number))
end

Private Instance Methods

api_key_required() click to toggle source
# File lib/etracking/client.rb, line 157
def api_key_required
  raise ArgumentError, '`api_key` is not configured' unless api_key
end
key_secret_required() click to toggle source
# File lib/etracking/client.rb, line 161
def key_secret_required
  raise ArgumentError, '`key_secret` is not configured' unless key_secret
end