class Jusolink

Jusolink API Service class

Constants

POPBILL_APIVersion
ServiceID
ServiceURL

Attributes

isTest[RW]
linkhub[RW]
scopes[RW]
token_cache[RW]

Public Class Methods

instance(linkID, secretKey) click to toggle source
# File lib/jusolink.rb, line 17
def instance(linkID, secretKey)
  @instance ||= new
  @instance.token_cache = nil
  @instance.linkhub = Linkhub.instance(linkID, secretKey)
  @instance.scopes = ["200"]
  return @instance
end

Public Instance Methods

getBalance() click to toggle source

Get Partner's Remain Point

# File lib/jusolink.rb, line 97
def getBalance
  begin
    @linkhub.getPartnerBalance(getSession_Token(), ServiceID)
  rescue LinkhubException => le
    raise JusolinkException.new(le.code, le.message)
  end
end
getSession_Token() click to toggle source

Get Session Token by checking token-cache

# File lib/jusolink.rb, line 28
def getSession_Token()
  targetToken = nil
  refresh = false

  # check already cached CorpNum's SessionToken
  unless @token_cache.nil?
    targetToken = @token_cache
  end

  if targetToken.nil?
    refresh = true
  else
    # Token's expireTime must use parse() because time format is hh:mm:ss.SSSZ
    expireTime = DateTime.parse(targetToken['expiration'])
    serverUTCTime = DateTime.strptime(@linkhub.getTime())
    refresh = expireTime < serverUTCTime
  end

  if refresh
    begin
      # getSessionToken from Linkhub
      targetToken = @linkhub.getSessionToken(ServiceID, "", @scopes)
    rescue LinkhubException => le
      raise JusolinkException.new(le.code, le.message)
    end
    # refresh @token_cache object
    @token_cache = targetToken
  end

  targetToken['session_token']
end
getUnitCost() click to toggle source

Get Jusolink UnitCost

# File lib/jusolink.rb, line 106
def getUnitCost
  httpget('/Search/UnitCost')['unitCost']
end
gzip_parse(target) click to toggle source
# File lib/jusolink.rb, line 60
def gzip_parse (target)
  sio = StringIO.new(target)
  gz = Zlib::GzipReader.new(sio)
  gz.read()
end
httpget(url) click to toggle source

Jusolink API http Get Request Func

# File lib/jusolink.rb, line 67
def httpget(url)
  headers = {
    "x-pb-version" => Jusolink::POPBILL_APIVersion,
    "Accept-Encoding" => "gzip,deflate",
  }

  headers["Authorization"] = "Bearer " + getSession_Token()

  uri = URI(ServiceURL + url)
  request = Net::HTTP.new(uri.host, 443)
  request.use_ssl = true

  Net::HTTP::Get.new(uri)

  res = request.get(uri.request_uri, headers)

  if res.code == "200"
    if res.header['Content-Encoding'].eql?('gzip')
      JSON.parse(gzip_parse(res.body))
    else
      JSON.parse(res.body)
    end
  else
    raise JusolinkException.new(JSON.parse(res.body)["code"],
      JSON.parse(res.body)["message"])
  end
end