jusolink 1.0.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 +7 -0
  2. data/lib/jusolink.rb +142 -0
  3. 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: []