genba 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/lib/genba/client/direct_entitlements.rb +5 -4
- data/lib/genba/client/keys.rb +10 -10
- data/lib/genba/client.rb +58 -15
- data/lib/genba/util.rb +4 -7
- data/lib/genba/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2549766d6aa78a612a97e0dfde945efb957a5d7ed5fed603b94a063cb09aa89f
|
4
|
+
data.tar.gz: 615bb36c8c85adec6543f009f92feda96ff4efcd503ff9b4b6324474f7bf81ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fa85bc6bf5e698ed5afb5c51ef550a271d0ca4fd9e2c0973c91a3bbc692e7683e0b887058127d9e80f362ebb46a0f1bda26eb860025f6ee96fbf0e81fa5e511
|
7
|
+
data.tar.gz: 107cd3b48f5980531389d8a38e88f55d296ebc90d5d739fafb1d297c5a6937691568b58d35dbeb8e48479f4177754d7696ae6ffe2de7405605e9e5f9c15c2dfc
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
genba (0.1.
|
4
|
+
genba (0.1.10)
|
5
5
|
oj (~> 3.5)
|
6
6
|
rest-client (~> 2.0)
|
7
7
|
ruby-mcrypt (= 0.2.0)
|
@@ -70,7 +70,7 @@ GEM
|
|
70
70
|
thread_safe (~> 0.1)
|
71
71
|
unf (0.1.4)
|
72
72
|
unf_ext
|
73
|
-
unf_ext (0.0.7.
|
73
|
+
unf_ext (0.0.7.6)
|
74
74
|
uuidtools (2.1.5)
|
75
75
|
webmock (3.4.1)
|
76
76
|
addressable (>= 2.3.6)
|
@@ -93,4 +93,4 @@ DEPENDENCIES
|
|
93
93
|
webmock
|
94
94
|
|
95
95
|
BUNDLED WITH
|
96
|
-
1.17.
|
96
|
+
1.17.3
|
@@ -20,7 +20,8 @@ module Genba
|
|
20
20
|
e_tailer_selling_price_net:,
|
21
21
|
e_tailer_selling_price_gross:,
|
22
22
|
e_tailer_selling_price_currency_code:,
|
23
|
-
headers: {}
|
23
|
+
headers: {},
|
24
|
+
options: {}
|
24
25
|
)
|
25
26
|
params = {
|
26
27
|
skuId: sku_id,
|
@@ -37,12 +38,12 @@ module Genba
|
|
37
38
|
}.select { |_, v| !v.nil? }
|
38
39
|
params[:saleDate] = sale_date.strftime('%FT%T') if sale_date
|
39
40
|
Genba::Util.log_debug "DirectEntitlements activate payload: #{params.inspect}"
|
40
|
-
@client.rest_get_with_token('/directentitlement/activate', params, headers)
|
41
|
+
@client.rest_get_with_token('/directentitlement/activate', params, headers, options)
|
41
42
|
end
|
42
43
|
|
43
44
|
# Use this method to redeem keys already sold for a Direct Entitlement SKU and link them to the
|
44
45
|
# end-user's account. You will not be charged at the point of calling this method.
|
45
|
-
def redeem(sku_id:, key_id:, end_user_id:, end_user_ticket:, headers: {})
|
46
|
+
def redeem(sku_id:, key_id:, end_user_id:, end_user_ticket:, headers: {}, options: {})
|
46
47
|
params = {
|
47
48
|
customerAccountId: @client.customer_account_id,
|
48
49
|
skuId: sku_id,
|
@@ -50,7 +51,7 @@ module Genba
|
|
50
51
|
endUserId: end_user_id,
|
51
52
|
endUserTicket: end_user_ticket
|
52
53
|
}
|
53
|
-
@client.rest_get_with_token('/directentitlement/redeem', params, headers)
|
54
|
+
@client.rest_get_with_token('/directentitlement/redeem', params, headers, options)
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
data/lib/genba/client/keys.rb
CHANGED
@@ -15,35 +15,35 @@ module Genba
|
|
15
15
|
@client.rest_get_with_token('/testKeys', params, headers)
|
16
16
|
end
|
17
17
|
|
18
|
-
def get_keys(sku_id, quantity = 1, params = {}, headers = {})
|
18
|
+
def get_keys(sku_id, quantity = 1, params = {}, headers = {}, options: {})
|
19
19
|
payload = params.merge(
|
20
20
|
skuId: sku_id,
|
21
21
|
quantity: quantity,
|
22
22
|
customerAccountId: @client.customer_account_id
|
23
23
|
)
|
24
|
-
@client.rest_get_with_token('/keys', payload, headers)
|
24
|
+
@client.rest_get_with_token('/keys', payload, headers, options)
|
25
25
|
end
|
26
26
|
|
27
|
-
def get_key_code_status(key_code, params = {}, headers = {})
|
27
|
+
def get_key_code_status(key_code, params = {}, headers = {}, options: {})
|
28
28
|
payload = params.merge(
|
29
29
|
keyCode: key_code
|
30
30
|
)
|
31
|
-
@client.rest_get_with_token('/keys', payload, headers)
|
31
|
+
@client.rest_get_with_token('/keys', payload, headers, options)
|
32
32
|
end
|
33
33
|
|
34
|
-
def get_key_status(key_id, params = {}, headers = {})
|
35
|
-
@client.rest_get_with_token("/keys/#{key_id}", params, headers)
|
34
|
+
def get_key_status(key_id, params = {}, headers = {}, options: {})
|
35
|
+
@client.rest_get_with_token("/keys/#{key_id}", params, headers, options)
|
36
36
|
end
|
37
37
|
|
38
|
-
def get_report_usage(keys = nil, headers = {})
|
38
|
+
def get_report_usage(keys = nil, headers = {}, options: {})
|
39
39
|
raise 'ReportUsage keys should be array' unless keys.is_a?(Array)
|
40
40
|
raise 'ReportUseag keys should be a KeyReportRequest class' unless key_report_request?(keys)
|
41
41
|
payload = keys.map(&:to_genba_json_payload)
|
42
42
|
Genba::Util.log_debug "get_report_usage payload: #{payload.inspect}"
|
43
|
-
@client.rest_post_with_token('/keyReport', payload, headers)
|
43
|
+
@client.rest_post_with_token('/keyReport', payload, headers, options)
|
44
44
|
end
|
45
45
|
|
46
|
-
def black_list(keys = nil, headers = {})
|
46
|
+
def black_list(keys = nil, headers = {}, options: {})
|
47
47
|
raise 'Blacklist keys should be array' unless keys.is_a?(Array)
|
48
48
|
raise 'Blacklist keys should be a KeyBlackListRequest class' unless key_black_list_request?(keys)
|
49
49
|
|
@@ -52,7 +52,7 @@ module Genba
|
|
52
52
|
end
|
53
53
|
|
54
54
|
payload = keys.map(&:to_genba_json_payload)
|
55
|
-
@client.rest_post_with_token('/blackListKeys', payload, headers)
|
55
|
+
@client.rest_post_with_token('/blackListKeys', payload, headers, options)
|
56
56
|
end
|
57
57
|
|
58
58
|
private
|
data/lib/genba/client.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
module Genba
|
4
4
|
# Genba API Client
|
5
5
|
class Client
|
6
|
-
attr_accessor :customer_account_id
|
6
|
+
attr_accessor :customer_account_id,
|
7
|
+
:open_timeout, :read_timeout, :max_retry, :retry_delay
|
7
8
|
|
8
9
|
API_URL = 'https://api.genbagames.com/api'.freeze
|
9
10
|
|
@@ -17,11 +18,15 @@ module Genba
|
|
17
18
|
# * +config+ - Genba API credential attribute
|
18
19
|
#
|
19
20
|
# ==== Options
|
20
|
-
def initialize(app_id:, username:, api_key:, customer_account_id:)
|
21
|
+
def initialize(app_id:, username:, api_key:, customer_account_id:, options: {})
|
21
22
|
@app_id = app_id.strip
|
22
23
|
@username = username.strip
|
23
24
|
@api_key = api_key.strip
|
24
25
|
@customer_account_id = customer_account_id.strip
|
26
|
+
@open_timeout = options[:open_timeout] || 15
|
27
|
+
@read_timeout = options[:read_timeout] || 60
|
28
|
+
@max_retry = options[:max_retry] || 0
|
29
|
+
@retry_delay = options[:retry_delay] || 2
|
25
30
|
end
|
26
31
|
|
27
32
|
def generate_token
|
@@ -39,33 +44,71 @@ module Genba
|
|
39
44
|
raw_token
|
40
45
|
end
|
41
46
|
|
42
|
-
def rest_get_with_token(path, query_params = {}, headers = {})
|
47
|
+
def rest_get_with_token(path, query_params = {}, headers = {}, options = {})
|
43
48
|
genba_headers = token.merge(headers)
|
44
|
-
Genba::Util.log_debug "API Headers: #{genba_headers.inspect}"
|
45
49
|
api_url = "#{API_URL}#{path}"
|
46
50
|
api_url += "?#{query_params.to_query}" unless query_params.empty?
|
47
|
-
|
48
|
-
|
51
|
+
response = execute_request(method: :get, url: api_url,
|
52
|
+
headers: genba_headers, options: options)
|
49
53
|
from_rest_client_response(response)
|
50
54
|
end
|
51
55
|
|
52
|
-
def rest_put_with_token(path, body = {}, headers = {})
|
56
|
+
def rest_put_with_token(path, body = {}, headers = {}, options = {})
|
53
57
|
genba_headers = token.merge(headers)
|
54
|
-
|
55
|
-
|
56
|
-
response = RestClient.put("#{API_URL}#{path}", encode_json(body), genba_headers)
|
58
|
+
response = execute_request(method: :put, url: "#{API_URL}#{path}",
|
59
|
+
payload: encode_json(body), headers: genba_headers, options: options)
|
57
60
|
from_rest_client_response(response)
|
58
61
|
end
|
59
62
|
|
60
|
-
def rest_post_with_token(path, body = {}, headers = {})
|
63
|
+
def rest_post_with_token(path, body = {}, headers = {}, options = {})
|
61
64
|
genba_headers = token.merge(headers)
|
62
|
-
|
63
|
-
|
64
|
-
Genba::Util.log_info "body: #{body}"
|
65
|
-
response = RestClient.post("#{API_URL}#{path}", encode_json(body), genba_headers)
|
65
|
+
response = execute_request(method: :post, url: "#{API_URL}#{path}",
|
66
|
+
payload: encode_json(body), headers: genba_headers, options: options)
|
66
67
|
from_rest_client_response(response)
|
67
68
|
end
|
68
69
|
|
70
|
+
def execute_request(method:, url:, payload: {}, headers: {}, options: {})
|
71
|
+
request_opts = {
|
72
|
+
headers: headers,
|
73
|
+
method: method,
|
74
|
+
payload: payload,
|
75
|
+
url: url
|
76
|
+
}
|
77
|
+
other_opts = {
|
78
|
+
open_timeout: options[:open_timeout] || @open_timeout,
|
79
|
+
read_timeout: options[:read_timeout] || @read_timeout,
|
80
|
+
max_retry: options[:max_retry] || @max_retry
|
81
|
+
}
|
82
|
+
|
83
|
+
Genba::Util.log_debug "API Headers: #{headers.inspect}"
|
84
|
+
Genba::Util.log_debug "Options: #{other_opts}"
|
85
|
+
Genba::Util.log_info "#{method.upcase}: #{url}"
|
86
|
+
Genba::Util.log_info "payload: #{payload}" if payload.present?
|
87
|
+
|
88
|
+
request_opts.merge! other_opts
|
89
|
+
execute_request_with_rescues(request_opts, other_opts[:max_retry])
|
90
|
+
end
|
91
|
+
|
92
|
+
def execute_request_with_rescues(request_opts, max_retry)
|
93
|
+
num_try = 0
|
94
|
+
begin
|
95
|
+
response = RestClient::Request.execute(request_opts)
|
96
|
+
rescue StandardError => e
|
97
|
+
Genba::Util.log_error "#{e.class} => #{e.message}"
|
98
|
+
|
99
|
+
num_try += 1
|
100
|
+
sleep @retry_delay
|
101
|
+
|
102
|
+
if num_try <= max_retry
|
103
|
+
Genba::Util.log_error "retry ====> #{num_try}"
|
104
|
+
retry
|
105
|
+
end
|
106
|
+
|
107
|
+
raise e
|
108
|
+
end
|
109
|
+
response
|
110
|
+
end
|
111
|
+
|
69
112
|
def products
|
70
113
|
Products.new(self)
|
71
114
|
end
|
data/lib/genba/util.rb
CHANGED
@@ -3,24 +3,21 @@ require 'cgi'
|
|
3
3
|
module Genba
|
4
4
|
module Util
|
5
5
|
def self.log_error(message, data = {})
|
6
|
-
if !Genba.
|
7
|
-
!Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_ERROR
|
6
|
+
if !Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_ERROR
|
8
7
|
log_internal(message, data, color: :cyan,
|
9
8
|
level: Genba::LEVEL_ERROR, logger: Genba.logger, out: $stderr)
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
13
12
|
def self.log_info(message, data = {})
|
14
|
-
if !Genba.
|
15
|
-
!Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_INFO
|
13
|
+
if !Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_INFO
|
16
14
|
log_internal(message, data, color: :cyan,
|
17
15
|
level: Genba::LEVEL_INFO, logger: Genba.logger, out: $stdout)
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
19
|
def self.log_debug(message, data = {})
|
22
|
-
if !Genba.
|
23
|
-
!Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_DEBUG
|
20
|
+
if !Genba.log_level.nil? && Genba.log_level <= Genba::LEVEL_DEBUG
|
24
21
|
log_internal(message, data, color: :blue,
|
25
22
|
level: Genba::LEVEL_DEBUG, logger: Genba.logger, out: $stdout)
|
26
23
|
end
|
@@ -35,7 +32,7 @@ module Genba
|
|
35
32
|
magenta: 5, light_magenta: 65,
|
36
33
|
cyan: 6, light_cyan: 66,
|
37
34
|
white: 7, light_white: 67,
|
38
|
-
default: 9
|
35
|
+
default: 9
|
39
36
|
}.freeze
|
40
37
|
private_constant :COLOR_CODES
|
41
38
|
|
data/lib/genba/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: genba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dean Lin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|