linkhub 1.1.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/linkhub.rb +60 -77
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4e0ef8517b6f56311b735b2533a1f907b662ca4
|
4
|
+
data.tar.gz: 6d132d61f632cde4572af03059f17ed44aed4ce7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77cea59a932b20aa797ea9706c7beb76db167db55e201deac13746e2e4b6a84f6b1ee5aeeadec084ceb493cf9065e3a8bf94ba6af98e89a7f0548688c852aefe
|
7
|
+
data.tar.gz: ece7ed9bf9529187f0c0ced32ad5636586c81bbd2d96c0fba289ccff498df28f42cca9e2cb3554ac3d2d7ded28d0e4bdf93c1b4664a4d81793f7aaeeeaca258d
|
data/lib/linkhub.rb
CHANGED
@@ -4,14 +4,18 @@ require "uri"
|
|
4
4
|
require "json"
|
5
5
|
require "digest"
|
6
6
|
require "base64"
|
7
|
+
require 'zlib'
|
8
|
+
require 'stringio'
|
9
|
+
require 'openssl'
|
7
10
|
|
8
11
|
# Linkhub API Base Class
|
9
12
|
class Linkhub
|
10
13
|
attr_accessor :_linkID, :_secretKey
|
11
14
|
|
12
|
-
LINKHUB_APIVersion = "
|
15
|
+
LINKHUB_APIVersion = "2.0"
|
13
16
|
LINKHUB_ServiceURL = "https://auth.linkhub.co.kr"
|
14
|
-
|
17
|
+
LINKHUB_ServiceURL_Static = "https://static-auth.linkhub.co.kr"
|
18
|
+
LINKHUB_ServiceURL_GA = "https://ga-auth.linkhub.co.kr"
|
15
19
|
# Generate Linkhub Class Singleton Instance
|
16
20
|
class << self
|
17
21
|
def instance(linkID, secretKey)
|
@@ -23,67 +27,77 @@ class Linkhub
|
|
23
27
|
private :new
|
24
28
|
end
|
25
29
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
def getServiceURL(useStaticIP, useGAIP)
|
31
|
+
if useGAIP
|
32
|
+
return LINKHUB_ServiceURL_GA
|
33
|
+
elsif useStaticIP
|
34
|
+
return LINKHUB_ServiceURL_Static
|
35
|
+
else
|
36
|
+
return LINKHUB_ServiceURL
|
37
|
+
end
|
30
38
|
end
|
31
39
|
|
32
40
|
# Get SessionToken for Bearer Token
|
33
|
-
def getSessionToken(serviceid, accessid, scope)
|
34
|
-
uri = URI(
|
41
|
+
def getSessionToken(serviceid, accessid, scope, forwardip="",useStaticIP=false,useGAIP=false)
|
42
|
+
uri = URI(getServiceURL(useStaticIP, useGAIP) + "/" + serviceid + "/Token")
|
43
|
+
|
35
44
|
postData = {:access_id => accessid, :scope => scope}.to_json
|
36
45
|
|
37
|
-
apiServerTime = getTime()
|
46
|
+
apiServerTime = getTime(useStaticIP, useGAIP)
|
38
47
|
|
39
48
|
hmacTarget = "POST\n"
|
40
|
-
hmacTarget += Base64.strict_encode64(Digest::
|
49
|
+
hmacTarget += Base64.strict_encode64(Digest::SHA256.digest(postData)) + "\n"
|
41
50
|
hmacTarget += apiServerTime + "\n"
|
51
|
+
|
52
|
+
if forwardip != ""
|
53
|
+
hmacTarget += forwardip + "\n"
|
54
|
+
end
|
55
|
+
|
42
56
|
hmacTarget += LINKHUB_APIVersion + "\n"
|
43
57
|
hmacTarget += "/" + serviceid + "/Token"
|
44
58
|
|
45
59
|
key = Base64.decode64(@_secretKey)
|
46
60
|
|
47
61
|
data = hmacTarget
|
48
|
-
digest = OpenSSL::Digest.new("
|
49
|
-
hmac = Base64.
|
62
|
+
digest = OpenSSL::Digest.new("sha256")
|
63
|
+
hmac = Base64.strict_encode64(OpenSSL::HMAC.digest(digest, key, data))
|
50
64
|
|
51
65
|
headers = {
|
52
|
-
"Content-Type" => "application/json
|
66
|
+
"Content-Type" => "application/json",
|
53
67
|
"Authorization" => "LINKHUB " + @_linkID + " " + hmac,
|
54
68
|
"Accept-Encoding" => "gzip,deflate",
|
55
69
|
"x-lh-date" => apiServerTime,
|
56
70
|
"x-lh-version" => LINKHUB_APIVersion
|
57
71
|
}
|
58
72
|
|
59
|
-
|
60
|
-
|
61
|
-
|
73
|
+
if forwardip != ""
|
74
|
+
headers.store("x-lh-forwarded", forwardip)
|
75
|
+
end
|
62
76
|
|
77
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
78
|
+
https.use_ssl = true
|
63
79
|
res = https.post(uri.path, postData, headers)
|
64
80
|
|
81
|
+
begin
|
82
|
+
gz = Zlib::GzipReader.new(StringIO.new(res.body.to_s))
|
83
|
+
uncompressed_string = gz.read
|
84
|
+
rescue Zlib::Error => le
|
85
|
+
uncompressed_string = res.body
|
86
|
+
end
|
87
|
+
|
65
88
|
if res.code == "200"
|
66
|
-
|
67
|
-
JSON.parse(gzip_parse(res.body))
|
68
|
-
else
|
69
|
-
JSON.parse(res.body)
|
70
|
-
end
|
89
|
+
JSON.parse(uncompressed_string)
|
71
90
|
else
|
72
|
-
|
73
|
-
|
74
|
-
message = JSON.parse(gzip_parse(res.body))["message"]
|
75
|
-
else
|
76
|
-
code = JSON.parse(res.body)["code"]
|
77
|
-
message = JSON.parse(res.body)["message"]
|
78
|
-
end
|
79
|
-
raise LinkhubException.new(code,message)
|
91
|
+
raise LinkhubException.new(JSON.parse(uncompressed_string)["code"],
|
92
|
+
JSON.parse(uncompressed_string)["message"])
|
80
93
|
end
|
81
94
|
end # end of getToken
|
82
95
|
|
83
96
|
|
84
97
|
# Get API Server UTC Time
|
85
|
-
def getTime
|
86
|
-
uri = URI(
|
98
|
+
def getTime(useStaticIP=false,useGAIP=false)
|
99
|
+
uri = URI(getServiceURL(useStaticIP, useGAIP) + "/Time")
|
100
|
+
|
87
101
|
res = Net::HTTP.get_response(uri)
|
88
102
|
|
89
103
|
if res.code == "200"
|
@@ -95,8 +109,8 @@ class Linkhub
|
|
95
109
|
end
|
96
110
|
|
97
111
|
# 파트너 포인트 충전 URL - 2017/08/29 추가
|
98
|
-
def getPartnerURL(bearerToken, serviceID, togo)
|
99
|
-
uri = URI(
|
112
|
+
def getPartnerURL(bearerToken, serviceID, togo, useStaticIP=false, useGAIP=false)
|
113
|
+
uri = URI(getServiceURL(useStaticIP, useGAIP) + "/" + serviceID + "/URL?TG=" + togo)
|
100
114
|
|
101
115
|
headers = {
|
102
116
|
"Authorization" => "Bearer " + bearerToken,
|
@@ -109,26 +123,16 @@ class Linkhub
|
|
109
123
|
res = https.get(uri.request_uri, headers)
|
110
124
|
|
111
125
|
if res.code == "200"
|
112
|
-
|
113
|
-
JSON.parse(gzip_parse(res.body))["url"]
|
114
|
-
else
|
115
|
-
JSON.parse(res.body)["url"]
|
116
|
-
end
|
126
|
+
JSON.parse(res.body)["url"]
|
117
127
|
else
|
118
|
-
|
119
|
-
|
120
|
-
message = JSON.parse(gzip_parse(res.body))["message"]
|
121
|
-
else
|
122
|
-
code = JSON.parse(res.body)["code"]
|
123
|
-
message = JSON.parse(res.body)["message"]
|
124
|
-
end
|
125
|
-
raise LinkhubException.new(code,message)
|
128
|
+
raise LinkhubException.new(JSON.parse(res.body)["code"],
|
129
|
+
JSON.parse(res.body)["message"])
|
126
130
|
end
|
127
131
|
end
|
128
132
|
|
129
133
|
# Get Popbill member remain point
|
130
|
-
def getBalance(bearerToken, serviceID)
|
131
|
-
uri = URI(
|
134
|
+
def getBalance(bearerToken, serviceID, useStaticIP=false, useGAIP=false)
|
135
|
+
uri = URI(getServiceURL(useStaticIP, useGAIP) + "/" + serviceID + "/Point")
|
132
136
|
|
133
137
|
headers = {
|
134
138
|
"Authorization" => "Bearer " + bearerToken,
|
@@ -141,26 +145,16 @@ class Linkhub
|
|
141
145
|
res = https.get(uri.path, headers)
|
142
146
|
|
143
147
|
if res.code == "200"
|
144
|
-
|
145
|
-
JSON.parse(gzip_parse(res.body))["remainPoint"]
|
146
|
-
else
|
147
|
-
JSON.parse(res.body)["remainPoint"]
|
148
|
-
end
|
148
|
+
JSON.parse(res.body)["remainPoint"]
|
149
149
|
else
|
150
|
-
|
151
|
-
|
152
|
-
message = JSON.parse(gzip_parse(res.body))["message"]
|
153
|
-
else
|
154
|
-
code = JSON.parse(res.body)["code"]
|
155
|
-
message = JSON.parse(res.body)["message"]
|
156
|
-
end
|
157
|
-
raise LinkhubException.new(code,message)
|
150
|
+
raise LinkhubException.new(JSON.parse(res.body)["code"],
|
151
|
+
JSON.parse(res.body)["message"])
|
158
152
|
end
|
159
153
|
end
|
160
154
|
|
161
155
|
# Get Linkhub partner remain point
|
162
|
-
def getPartnerBalance(bearerToken, serviceID)
|
163
|
-
uri = URI(
|
156
|
+
def getPartnerBalance(bearerToken, serviceID, useStaticIP, useGAIP=false)
|
157
|
+
uri = URI(getServiceURL(useStaticIP, useGAIP) + "/" + serviceID + "/PartnerPoint")
|
164
158
|
|
165
159
|
headers = {
|
166
160
|
"Authorization" => "Bearer " + bearerToken,
|
@@ -173,21 +167,10 @@ class Linkhub
|
|
173
167
|
res = https.get(uri.path, headers)
|
174
168
|
|
175
169
|
if res.code == "200"
|
176
|
-
|
177
|
-
if res.header['Content-Encoding'].eql?('gzip')
|
178
|
-
JSON.parse(gzip_parse(res.body))["remainPoint"]
|
179
|
-
else
|
180
|
-
JSON.parse(res.body)["remainPoint"]
|
181
|
-
end
|
170
|
+
JSON.parse(res.body)["remainPoint"]
|
182
171
|
else
|
183
|
-
|
184
|
-
|
185
|
-
message = JSON.parse(gzip_parse(res.body))["message"]
|
186
|
-
else
|
187
|
-
code = JSON.parse(res.body)["code"]
|
188
|
-
message = JSON.parse(res.body)["message"]
|
189
|
-
end
|
190
|
-
raise LinkhubException.new(code,message)
|
172
|
+
raise LinkhubException.new(JSON.parse(res.body)["code"],
|
173
|
+
JSON.parse(res.body)["message"])
|
191
174
|
end
|
192
175
|
end
|
193
176
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linkhub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linkhub Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Linkhub API SDK
|
14
14
|
email: code@linkhub.co.kr
|
@@ -27,17 +27,17 @@ require_paths:
|
|
27
27
|
- lib
|
28
28
|
required_ruby_version: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.0.0
|
33
33
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ">="
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
38
|
requirements: []
|
39
39
|
rubyforge_project:
|
40
|
-
rubygems_version: 2.
|
40
|
+
rubygems_version: 2.5.1
|
41
41
|
signing_key:
|
42
42
|
specification_version: 4
|
43
43
|
summary: Linkhub API SDK
|