jusolink 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/jusolink.rb +142 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0d67d6160a321d2169d9b257f6b7b1e491d92125
|
4
|
+
data.tar.gz: 3a267c997c65eef7338bd79631c20985adf587a7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3fe121bc81ee282268aab290cd44907d6818e1e68bccd78eee3ccb71c603e9c564bda0d4a1ca85f6fc0b9b4fe5f3425d31d940c65f6bcb101e6677aff3b935f5
|
7
|
+
data.tar.gz: 111b78f910c8b48606f9c74c31238cbc30b529a2939b1c52d7c8e8b0d1b864cd82bd3cc3d362310c2f9a63e999e4587b3f030f5279d04c1fee1c5f4f3963747f
|
data/lib/jusolink.rb
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'net/http'
|
3
|
+
require 'uri'
|
4
|
+
require 'json'
|
5
|
+
require 'date'
|
6
|
+
require 'linkhub'
|
7
|
+
|
8
|
+
# Jusolink API Service class
|
9
|
+
class Jusolink
|
10
|
+
ServiceID = "JUSOLINK";
|
11
|
+
ServiceURL = "https://juso.linkhub.co.kr"
|
12
|
+
POPBILL_APIVersion = "1.0"
|
13
|
+
|
14
|
+
attr_accessor :token_cache, :scopes, :isTest, :linkhub
|
15
|
+
|
16
|
+
# Generate Linkhub Class Singleton Instance
|
17
|
+
class << self
|
18
|
+
def instance(linkID, secretKey)
|
19
|
+
@instance ||= new
|
20
|
+
@instance.token_cache = nil
|
21
|
+
@instance.linkhub = Linkhub.instance(linkID, secretKey)
|
22
|
+
@instance.scopes = ["200"]
|
23
|
+
return @instance
|
24
|
+
end
|
25
|
+
private :new
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get Session Token by checking token-cache
|
29
|
+
def getSession_Token()
|
30
|
+
targetToken = nil
|
31
|
+
refresh = false
|
32
|
+
|
33
|
+
# check already cached CorpNum's SessionToken
|
34
|
+
unless @token_cache.nil?
|
35
|
+
targetToken = @token_cache
|
36
|
+
end
|
37
|
+
|
38
|
+
if targetToken.nil?
|
39
|
+
refresh = true
|
40
|
+
else
|
41
|
+
# Token's expireTime must use parse() because time format is hh:mm:ss.SSSZ
|
42
|
+
expireTime = DateTime.parse(targetToken['expiration'])
|
43
|
+
serverUTCTime = DateTime.strptime(@linkhub.getTime())
|
44
|
+
refresh = expireTime < serverUTCTime
|
45
|
+
end
|
46
|
+
|
47
|
+
if refresh
|
48
|
+
begin
|
49
|
+
# getSessionToken from Linkhub
|
50
|
+
targetToken = @linkhub.getSessionToken(ServiceID, "", @scopes)
|
51
|
+
rescue LinkhubException => le
|
52
|
+
raise JusolinkException.new(le.code, le.message)
|
53
|
+
end
|
54
|
+
# refresh @token_cache object
|
55
|
+
@token_cache = targetToken
|
56
|
+
end
|
57
|
+
|
58
|
+
targetToken['session_token']
|
59
|
+
end # end of getSession_Token
|
60
|
+
|
61
|
+
def gzip_parse (target)
|
62
|
+
sio = StringIO.new(target)
|
63
|
+
gz = Zlib::GzipReader.new(sio)
|
64
|
+
gz.read()
|
65
|
+
end
|
66
|
+
|
67
|
+
# Jusolink API http Get Request Func
|
68
|
+
def httpget(url)
|
69
|
+
headers = {
|
70
|
+
"x-pb-version" => Jusolink::POPBILL_APIVersion,
|
71
|
+
"Accept-Encoding" => "gzip,deflate",
|
72
|
+
}
|
73
|
+
|
74
|
+
headers["Authorization"] = "Bearer " + getSession_Token()
|
75
|
+
|
76
|
+
uri = URI(ServiceURL + url)
|
77
|
+
request = Net::HTTP.new(uri.host, 443)
|
78
|
+
request.use_ssl = true
|
79
|
+
|
80
|
+
Net::HTTP::Get.new(uri)
|
81
|
+
|
82
|
+
res = request.get(uri.request_uri, headers)
|
83
|
+
|
84
|
+
if res.code == "200"
|
85
|
+
if res.header['Content-Encoding'].eql?('gzip')
|
86
|
+
JSON.parse(gzip_parse(res.body))
|
87
|
+
else
|
88
|
+
JSON.parse(res.body)
|
89
|
+
end
|
90
|
+
else
|
91
|
+
raise JusolinkException.new(JSON.parse(res.body)["code"],
|
92
|
+
JSON.parse(res.body)["message"])
|
93
|
+
end
|
94
|
+
end #end of httpget
|
95
|
+
|
96
|
+
|
97
|
+
# Get Partner's Remain Point
|
98
|
+
def getBalance
|
99
|
+
begin
|
100
|
+
@linkhub.getPartnerBalance(getSession_Token(), ServiceID)
|
101
|
+
rescue LinkhubException => le
|
102
|
+
raise JusolinkException.new(le.code, le.message)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
# Get Jusolink UnitCost
|
107
|
+
def getUnitCost
|
108
|
+
httpget('/Search/UnitCost')['unitCost']
|
109
|
+
end
|
110
|
+
|
111
|
+
# search
|
112
|
+
def search(index, pageNum = 1, perPage = 20, noSuggest = false, noDiff = false)
|
113
|
+
if index.to_s == ''
|
114
|
+
raise JusolinkException.new('-99999999', '검색어가 입력되지 않았습니다.')
|
115
|
+
end
|
116
|
+
|
117
|
+
uri = "/Search?Searches="+index
|
118
|
+
uri += "&PageNum=" + pageNum.to_s
|
119
|
+
uri += "&PerPage=" + perPage.to_s
|
120
|
+
|
121
|
+
if noSuggest
|
122
|
+
uri += "&noSuggest=true"
|
123
|
+
end
|
124
|
+
|
125
|
+
if noDiff
|
126
|
+
uri += "&noDiff=true"
|
127
|
+
end
|
128
|
+
|
129
|
+
httpget(URI.escape(uri))
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
end # end of Jusolink class
|
134
|
+
|
135
|
+
# Popbill API Exception Handler class
|
136
|
+
class JusolinkException < StandardError
|
137
|
+
attr_reader :code, :message
|
138
|
+
def initialize(code, message)
|
139
|
+
@code = code
|
140
|
+
@message = message
|
141
|
+
end
|
142
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jusolink
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Linkhub Dev
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: linkhub
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.7.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.7.5
|
41
|
+
description: Jusolink API SDK
|
42
|
+
email: code@linkhub.co.kr
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/jusolink.rb
|
48
|
+
homepage: https://github.com/linkhub-sdk/jusolink.ruby
|
49
|
+
licenses:
|
50
|
+
- APACHE LICENSE VERSION 2.0
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 2.0.0
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.4.8
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Jusolink API SDK
|
72
|
+
test_files: []
|