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
search(index, pageNum = 1, perPage = 20, noSuggest = false, noDiff = false)
click to toggle source
search
# File lib/jusolink.rb, line 111 def search(index, pageNum = 1, perPage = 20, noSuggest = false, noDiff = false) if index.to_s == '' raise JusolinkException.new('-99999999', '검색어가 입력되지 않았습니다.') end uri = "/Search?Searches="+index uri += "&PageNum=" + pageNum.to_s uri += "&PerPage=" + perPage.to_s if noSuggest uri += "&noSuggest=true" end if noDiff uri += "&noDiff=true" end httpget(URI.escape(uri)) end