linkhub 1.1.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/linkhub.rb +60 -77
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a3768023fa4fe1ccd7dadd77464dfa0bf1fd29c
4
- data.tar.gz: 6c80f61b1c10d79203285015b41ee9f0fa8c4a00
3
+ metadata.gz: d4e0ef8517b6f56311b735b2533a1f907b662ca4
4
+ data.tar.gz: 6d132d61f632cde4572af03059f17ed44aed4ce7
5
5
  SHA512:
6
- metadata.gz: 5060684e259865f9822f8dfcdf256b91cea54c225f01897812d971fc172f964f372b8111f53ba42c5d58682a1aa451ae08d9d94634f4cacbc5875854d7aff0c9
7
- data.tar.gz: 7092122b0b89f592597db3dc026d06df387f7ddc72d02e24c422943010c3d2971ad8ab960e1b04e297c582b4f127acf9f99fc25e9baa9ee7b6dd4e02e7d34de5
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 = "1.0"
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 gzip_parse (target)
27
- sio = StringIO.new(target)
28
- gz = Zlib::GzipReader.new(sio)
29
- gz.read()
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(LINKHUB_ServiceURL + "/" + serviceid + "/Token")
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::MD5.digest(postData)) + "\n"
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("sha1")
49
- hmac = Base64.encode64(OpenSSL::HMAC.digest(digest, key, data))
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; charset=utf8",
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
- https = Net::HTTP.new(uri.host, 443)
60
- https.use_ssl = true
61
- Net::HTTP::Post.new(uri)
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
- if res.header['Content-Encoding'].eql?('gzip')
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
- if res.header['Content-Encoding'].eql?('gzip')
73
- code = JSON.parse(gzip_parse(res.body))["code"]
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(LINKHUB_ServiceURL + "/Time")
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(LINKHUB_ServiceURL + "/" + serviceID + "/URL?TG=" + togo)
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
- if res.header['Content-Encoding'].eql?('gzip')
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
- if res.header['Content-Encoding'].eql?('gzip')
119
- code = JSON.parse(gzip_parse(res.body))["code"]
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(LINKHUB_ServiceURL + "/" + serviceID + "/Point")
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
- if res.header['Content-Encoding'].eql?('gzip')
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
- if res.header['Content-Encoding'].eql?('gzip')
151
- code = JSON.parse(gzip_parse(res.body))["code"]
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(LINKHUB_ServiceURL + "/" + serviceID + "/PartnerPoint")
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
- if res.header['Content-Encoding'].eql?('gzip')
184
- code = JSON.parse(gzip_parse(res.body))["code"]
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.1.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: 2019-02-27 00:00:00.000000000 Z
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.4.8
40
+ rubygems_version: 2.5.1
41
41
  signing_key:
42
42
  specification_version: 4
43
43
  summary: Linkhub API SDK