eme_services_client 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/eme/admin_user.rb +132 -0
- data/lib/eme/admin_user/required_login.rb +44 -0
- data/lib/eme/ams.rb +29 -0
- data/lib/eme/auth.rb +24 -0
- data/lib/eme/billing.rb +496 -0
- data/lib/eme/billing/workers/refresh_wallet_worker.rb +23 -0
- data/lib/eme/bt.rb +21 -0
- data/lib/eme/lootbox.rb +27 -0
- data/lib/eme/shop.rb +15 -0
- data/lib/eme/sso.rb +41 -0
- data/lib/eme/sso/token_reader.rb +74 -0
- data/lib/eme/subscription.rb +246 -0
- data/lib/eme/tera_game_data.rb +67 -0
- data/lib/eme/tera_server.rb +13 -0
- data/lib/eme/tera_server/server.rb +47 -0
- data/lib/eme_services_client.rb +19 -0
- metadata +130 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
class RefreshWalletWorker
|
2
|
+
include SuckerPunch::Job
|
3
|
+
workers 2
|
4
|
+
|
5
|
+
@available_connections = [:refresh_wallet_worker_1, :refresh_wallet_worker_2, :refresh_wallet_worker_3]
|
6
|
+
def self.get_connection
|
7
|
+
@available_connections.pop
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.return_connection(conn)
|
11
|
+
@available_connections.push(conn)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.all_connections
|
15
|
+
@available_connections
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform(master_account_id, currency = "EMP", opts = {})
|
19
|
+
conn = RefreshWalletWorker.get_connection
|
20
|
+
EME::Billing.reload_wallet(master_account_id, currency, opts, EME::Billing.connection(conn))
|
21
|
+
RefreshWalletWorker.return_connection(conn)
|
22
|
+
end
|
23
|
+
end
|
data/lib/eme/bt.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'api_consumer'
|
2
|
+
|
3
|
+
module EME
|
4
|
+
class BT < APIConsumer
|
5
|
+
def self.track(data = {}, conn = connection, opts = {}, reload = false)
|
6
|
+
return nil if data[:master_account_id].nil? || data[:action].nil? || data[:label].nil?
|
7
|
+
d = { :uid => data[:master_account_id], :act => data[:action], :label => data[:label] }
|
8
|
+
d[:game] = data[:game] || settings[:game]
|
9
|
+
d[:res] = data[:resource] || settings[:resource]
|
10
|
+
d[:md] = data[:metadata] if data[:metadata]
|
11
|
+
d[:ip] = data[:ip] if data[:ip]
|
12
|
+
|
13
|
+
opts[:method] = :post
|
14
|
+
#opts[:body] = d.to_json
|
15
|
+
|
16
|
+
opts[:body] = URI.encode_www_form(d)
|
17
|
+
opts[:headers] = {"Content-Type" => "application/x-www-form-urlencoded"}
|
18
|
+
return do_request("/cast", conn, opts)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/eme/lootbox.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'api_consumer'
|
2
|
+
|
3
|
+
module EME
|
4
|
+
class Lootbox < APIConsumer
|
5
|
+
def self.definitions(game_id = nil, conn = connection, opts = {}, reload = false)
|
6
|
+
opts[:reload] ||= reload
|
7
|
+
opts[:ttl] ||= 900
|
8
|
+
path = "/loot_box_definitions"
|
9
|
+
path += "?game_id=#{game_id}" if game_id
|
10
|
+
return do_request(path, conn, opts)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.lootboxes(game_account_id, conn = connection, opts = {}, reload = false)
|
14
|
+
opts[:reload] ||= reload
|
15
|
+
opts[:ttl] ||= 1
|
16
|
+
return do_request("/loot_boxes?game_account_id=#{game_account_id}", conn, opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.open(loot_box_id, game_account_id, token, conn = connection, opts = {}, reload = false)
|
20
|
+
opts[:reload] ||= reload
|
21
|
+
opts[:method] = :post
|
22
|
+
opts[:ttl] ||= 1
|
23
|
+
opts[:body] = {id: loot_box_id, game_account_id: game_account_id, token: token}.to_json
|
24
|
+
return do_request("/loot_boxes/open", conn, opts)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/eme/shop.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'api_consumer'
|
2
|
+
|
3
|
+
module EME
|
4
|
+
class Shop < APIConsumer
|
5
|
+
def self.categories(game_id, conn = connection, opts = {}, reload = false)
|
6
|
+
opts[:reload] ||= reload
|
7
|
+
return do_request("/shop/categories?game_id=#{game_id}", conn, opts)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.gumballs(game, conn = connection, opts = {}, reload = false)
|
11
|
+
opts[:reload] ||= reload
|
12
|
+
return do_request("/shop/gumballs?game=#{game}", conn, opts)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/eme/sso.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'fast_config'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module EME
|
5
|
+
class SSO
|
6
|
+
extend FastConfig
|
7
|
+
|
8
|
+
#http://auth.service.edge.enmasse.com:4567/verify_shop_token/#{token}
|
9
|
+
def self.verify_tera_token(token)
|
10
|
+
return nil if token == nil
|
11
|
+
auth_request("/verify_shop_token/#{token}")
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.verify_sso_token(token)
|
15
|
+
auth_request("/sso/ticket/#{token}/verify", :post)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.verify_insecure_sso_token(token)
|
19
|
+
auth_request("/sso/ticket/#{token}/verify?tt=sso_insecure", :post)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def self.auth_request(path, http_method = :get, data = nil)
|
24
|
+
auth_response = nil
|
25
|
+
Net::HTTP.start(EME::SSO.settings[:auth_server], EME::SSO.settings[:auth_server_port]) do |http|
|
26
|
+
http.open_timeout = 5
|
27
|
+
http.read_timeout = 10
|
28
|
+
auth_response = if http_method == :get
|
29
|
+
http.get(path)
|
30
|
+
elsif http_method == :post
|
31
|
+
http.post(path, data)
|
32
|
+
else
|
33
|
+
raise RuntimeError, "Only :get and :post are allowed."
|
34
|
+
end
|
35
|
+
end
|
36
|
+
# parse the JSON....
|
37
|
+
return JSON.parse auth_response.body
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
require_relative "sso/token_reader"
|
@@ -0,0 +1,74 @@
|
|
1
|
+
class EME::SSO::TokenReader
|
2
|
+
|
3
|
+
def initialize(app)
|
4
|
+
@app = app
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
req = Rack::Request.new(env)
|
9
|
+
cookies = req.cookies
|
10
|
+
session = req.session
|
11
|
+
@eat_cookies = false
|
12
|
+
@bake_cookies = false
|
13
|
+
if cookies["_ssot"] && (!session["account_id"] || cookies["_ssot"] != session[:ssot])
|
14
|
+
connect_account(cookies, session)
|
15
|
+
elsif !cookies["_ssot"] && session["account_id"]
|
16
|
+
@eat_cookies = true
|
17
|
+
#disconnect_account(cookies, session)
|
18
|
+
end
|
19
|
+
@status, @headers, @response = @app.call(env)
|
20
|
+
set_cookies(cookies, session) if @eat_cookies || @bake_cookies
|
21
|
+
return [@status, @headers, @response]
|
22
|
+
end
|
23
|
+
|
24
|
+
def connect_account(cookies, session)
|
25
|
+
auth_response = EME::SSO::TokenReader.get_account_info(cookies["_ssot"])
|
26
|
+
code = auth_response.code.to_i
|
27
|
+
# {"temp_screen_name"=>false, "screen_name"=>"kaboo", "language"=>"en", "account_status"=>1, "email"=>"chris@chrisreister.com", "id"=>12345}
|
28
|
+
if code == 200
|
29
|
+
account_info = JSON.parse(auth_response.body)
|
30
|
+
EME::SSO::TokenReader.setup_user_session(account_info, session, cookies["_ssot"])
|
31
|
+
@bake_cookies = true
|
32
|
+
else # delete cookie if it was bad?
|
33
|
+
@eat_cookies = true
|
34
|
+
end
|
35
|
+
return true
|
36
|
+
rescue Exception => e
|
37
|
+
puts e.inspect
|
38
|
+
puts e.backtrace
|
39
|
+
#Airbrake.notify(e) # TO DO: setup airbrake?
|
40
|
+
return true
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.get_account_info(ssot)
|
44
|
+
auth_response = nil
|
45
|
+
Net::HTTP.start(EME::SSO.settings[:auth_server], EME::SSO.settings[:auth_server_port]) do |http|
|
46
|
+
http.open_timeout = 5
|
47
|
+
http.read_timeout = 10
|
48
|
+
auth_response = http.post("/sso/ticket/#{ssot}/verify", "tt=sso_insecure")
|
49
|
+
end
|
50
|
+
return auth_response
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.setup_user_session(user, session, ssot = nil)
|
54
|
+
session[:ssot] = ssot
|
55
|
+
session[:screen_name] = if user["temp_screen_name"]
|
56
|
+
user["email"].split("@")[0]
|
57
|
+
else
|
58
|
+
user["screen_name"]
|
59
|
+
end
|
60
|
+
session[:account_id] = user["id"]
|
61
|
+
session[:account_info] = user
|
62
|
+
end
|
63
|
+
|
64
|
+
def set_cookies(cookies, session)
|
65
|
+
if @eat_cookies
|
66
|
+
Rack::Utils.set_cookie_header!(@headers, "screen_name", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
|
67
|
+
Rack::Utils.set_cookie_header!(@headers, "_ssot", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
|
68
|
+
Rack::Utils.set_cookie_header!(@headers, "serialized", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
|
69
|
+
session.clear
|
70
|
+
elsif @bake_cookies
|
71
|
+
Rack::Utils.set_cookie_header!(@headers, "screen_name", {:value => session[:screen_name], :domain => ".enmasse.com", :path => "/"})
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,246 @@
|
|
1
|
+
require 'api_consumer'
|
2
|
+
|
3
|
+
module EME
|
4
|
+
class Subscription < APIConsumer
|
5
|
+
def self.all(page = 1, count = 100, conn = connection, opts = {}, reload = false)
|
6
|
+
opts = opts_work(opts)
|
7
|
+
opts[:ttl] ||= 10
|
8
|
+
opts[:reverse] ||= false
|
9
|
+
opts[:orderby] ||= "id"
|
10
|
+
opts[:reload] ||= reload
|
11
|
+
return do_request("/subscriptions?from=#{(page-1)*count}&count=#{count}&orderby=#{opts[:orderby]}&reverse=#{opts[:reverse]}", conn, opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.fetch_active(master_account_id, conn = connection, opts = {}, reload = false)
|
15
|
+
opts = opts_work(opts, "active-m-account-sub-#{master_account_id}")
|
16
|
+
opts[:reload] ||= reload
|
17
|
+
opts[:ttl] ||= 10
|
18
|
+
return do_request("/subscriptions/find_active_for_account/#{master_account_id}", conn, opts )
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.fetch_active_for_game_account(game_account_id, conn = connection, opts = {}, reload = false)
|
22
|
+
opts = opts_work(opts, "active-m-game-account-sub-#{game_account_id}")
|
23
|
+
opts[:reload] ||= reload
|
24
|
+
opts[:ttl] ||= 10
|
25
|
+
return do_request("/subscriptions/find_active_for_game_account/#{game_account_id}", conn, opts )
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.fetch_all(master_account_id, conn = connection, opts = {}, reload = false)
|
29
|
+
opts = opts_work(opts, "all-m-account-sub-#{master_account_id}")
|
30
|
+
opts[:reload] ||= reload
|
31
|
+
opts[:ttl] ||= 10
|
32
|
+
return do_request("/subscriptions/find_for_account/#{master_account_id}", conn, opts)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.fetch_all_for_game_account(game_account_id, conn = connection, opts = {}, reload = false)
|
36
|
+
opts = opts_work(opts, "all-m-game-account-sub-#{game_account_id}")
|
37
|
+
opts[:reload] ||= reload
|
38
|
+
return do_request("/subscriptions/find_for_game_account/#{game_account_id}", conn, opts)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.fetch(subscription_id, conn = connection, opts = {}, reload = false)
|
42
|
+
opts = opts_work(opts, "sub-#{subscription_id}")
|
43
|
+
opts[:reload] ||= reload
|
44
|
+
opts[:ttl] ||= 10
|
45
|
+
return do_request("/subscriptions/#{subscription_id}", conn, opts)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.create(ma_id, game_account_id, game_id, request_opts = {}, conn = connection, opts ={}, reload = false)
|
49
|
+
#optional params: :recurring, :started_at, :ended_at, :next_delivery_at, :next_payment_at, :subscription_kind_id
|
50
|
+
json = request_opts
|
51
|
+
json[:master_account_id] = ma_id
|
52
|
+
json[:start] = true if json[:start].nil?
|
53
|
+
json[:game_account_id] = game_account_id
|
54
|
+
json[:game_id] = game_id
|
55
|
+
json[:subscription_kind_name] = "30dayelite" if json[:subscription_kind_name].nil?
|
56
|
+
opts = opts_work(opts) # no cache
|
57
|
+
opts[:reload] ||= reload
|
58
|
+
opts[:method] = :post
|
59
|
+
opts[:body] = json.to_json
|
60
|
+
|
61
|
+
results = do_request("/subscriptions", conn, opts)
|
62
|
+
# erase cache here
|
63
|
+
clear_cache_for_account(ma_id)
|
64
|
+
return results
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.cancel(sub_id, conn = connection, opts ={}, reload = false)
|
68
|
+
opts = opts_work(opts)
|
69
|
+
opts[:reload] ||= reload
|
70
|
+
opts[:method] = :post
|
71
|
+
results = do_request("/subscriptions/#{sub_id}/cancel", conn, opts)
|
72
|
+
clear_cache_for_subscription(sub_id)
|
73
|
+
return results
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.revive(sub_id, conn = connection, opts ={}, reload = false)
|
77
|
+
opts = opts_work(opts)
|
78
|
+
opts[:reload] ||= reload
|
79
|
+
opts[:method] = :post
|
80
|
+
results = do_request("/subscriptions/#{sub_id}/revive", conn, opts)
|
81
|
+
clear_cache_for_subscription(sub_id)
|
82
|
+
return results
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.delete(sub_id, conn = connection, opts ={}, reload = false)
|
86
|
+
opts = opts_work(opts)
|
87
|
+
opts[:reload] ||= reload
|
88
|
+
opts[:method] = :delete
|
89
|
+
results = do_request("/subscriptions/#{sub_id}", conn, opts)
|
90
|
+
clear_cache_for_subscription(sub_id)
|
91
|
+
return results
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.update(sub_id, conn = connection, opts ={}, reload = false)
|
95
|
+
opts = opts_work(opts)
|
96
|
+
opts[:reload] ||= reload
|
97
|
+
opts[:method] = :post
|
98
|
+
results = do_request("/subscriptions/#{sub_id}", conn, opts)
|
99
|
+
clear_cache_for_subscription(sub_id)
|
100
|
+
return results
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.subscription_info_for_game_account(game_account_id, conn = connection, opts ={}, reload = false)
|
104
|
+
opts = opts_work(opts)
|
105
|
+
opts[:reload] ||= reload
|
106
|
+
do_request("/subscriptions/get_subscription_info_by_game_account/#{game_account_id}", conn, opts)
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.add_days(sub_id, days, notes = nil, additional_info = nil, conn = connection, opts ={}, reload = false)
|
110
|
+
opts = opts_work(opts)
|
111
|
+
opts[:reload] ||= reload
|
112
|
+
opts[:method] = :post
|
113
|
+
opts[:body] = {:days => days, :notes => notes, :additional_info => additional_info}.to_json
|
114
|
+
results = do_request("/subscriptions/#{sub_id}/add_days", conn, opts)
|
115
|
+
clear_cache_for_subscription(sub_id)
|
116
|
+
return results
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.add_days_with_subscription_creation(ma_id, game_account_id, game_id, days, request_opts = {}, conn = connection, opts ={}, reload = false)
|
120
|
+
#optional params: :subscription_kind_name, :notes, :addition_info
|
121
|
+
json = request_opts
|
122
|
+
json[:master_account_id] = ma_id
|
123
|
+
json[:game_account_id] = game_account_id
|
124
|
+
json[:game_id] = game_id
|
125
|
+
json[:days] = days
|
126
|
+
json[:subscription_kind_name] = "30dayelite" if json[:subscription_kind_name].nil?
|
127
|
+
opts = opts_work(opts) # no cache
|
128
|
+
opts[:reload] ||= reload
|
129
|
+
opts[:method] = :post
|
130
|
+
opts[:body] = json.to_json
|
131
|
+
|
132
|
+
results = do_request("/subscriptions/add_days", conn, opts)
|
133
|
+
# erase cache here
|
134
|
+
clear_cache_for_account(ma_id)
|
135
|
+
if results['subscription'] && results['subscription']['id']
|
136
|
+
clear_cache_for_subscription(results['subscription']['id'])
|
137
|
+
end
|
138
|
+
return results
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.remove_days(sub_id, days, notes = nil, additional_info = nil, conn = connection, opts ={}, reload = false)
|
142
|
+
opts = opts_work(opts)
|
143
|
+
opts[:reload] ||= reload
|
144
|
+
opts[:method] = :post
|
145
|
+
opts[:body] = {:days => days, :notes => notes, :additional_info => additional_info}.to_json
|
146
|
+
results = do_request("/subscriptions/#{sub_id}/remove_days", conn, opts)
|
147
|
+
clear_cache_for_subscription(sub_id)
|
148
|
+
return results
|
149
|
+
end
|
150
|
+
|
151
|
+
def self.events_for_sub(sub_id, conn = connection, opts ={}, reload = false)
|
152
|
+
opts = opts_work(opts)
|
153
|
+
opts[:reload] ||= reload
|
154
|
+
opts[:count] ||= 100
|
155
|
+
opts[:reverse] ||= false
|
156
|
+
opts[:orderby] ||= "id"
|
157
|
+
return do_request("/subscription_events?orderby=#{opts[:orderby]}&reverse=#{opts[:reverse]}&count=#{opts[:count]}&subscription_id=#{sub_id}", conn, opts)
|
158
|
+
end
|
159
|
+
|
160
|
+
def self.events(sub_id, game_account_id, master_account_id, conn = connection, opts ={}, reload = false)
|
161
|
+
opts = opts_work(opts)
|
162
|
+
opts[:reload] ||= reload
|
163
|
+
opts[:count] ||= 100
|
164
|
+
opts[:reverse] ||= false
|
165
|
+
opts[:orderby] ||= "id"
|
166
|
+
url = "/subscription_events?orderby=#{opts[:orderby]}&reverse=#{opts[:reverse]}&count=#{opts[:count]}"
|
167
|
+
url += "&subscription_id=#{sub_id}" if sub_id
|
168
|
+
url += "&game_account_id=#{game_account_id}" if game_account_id
|
169
|
+
url += "&master_account_id=#{master_account_id}" if master_account_id
|
170
|
+
return do_request(url, conn, opts)
|
171
|
+
end
|
172
|
+
|
173
|
+
def self.price_override_logs(game_account_id, master_account_id, conn = connection, opts ={}, reload = false)
|
174
|
+
opts = opts_work(opts)
|
175
|
+
opts[:reload] ||= reload
|
176
|
+
opts[:count] ||= 100
|
177
|
+
opts[:reverse] ||= false
|
178
|
+
opts[:orderby] ||= "id"
|
179
|
+
url = "/subscription_price_override_logs?orderby=#{opts[:orderby]}&reverse=#{opts[:reverse]}&count=#{opts[:count]}"
|
180
|
+
url += "&game_account_id=#{game_account_id}" if game_account_id
|
181
|
+
url += "&master_account_id=#{master_account_id}" if master_account_id
|
182
|
+
return do_request(url, conn, opts)
|
183
|
+
end
|
184
|
+
|
185
|
+
def self.fetch_price_overrides_by_game_account_id(game_account_id, conn = connection, opts ={}, reload = false)
|
186
|
+
opts = opts_work(opts)
|
187
|
+
opts[:reload] ||= reload
|
188
|
+
return do_request("/subscription_price_overrides/find_for_game_account/#{game_account_id}", conn, opts)
|
189
|
+
end
|
190
|
+
|
191
|
+
def self.delete_price_override(master_account_id, game_account_id, game_id, conn = connection, opts ={}, reload = false)
|
192
|
+
opts = opts_work(opts)
|
193
|
+
opts[:reload] ||= reload
|
194
|
+
opts[:method] = :post
|
195
|
+
body = {}
|
196
|
+
body[:master_account_id] = master_account_id if master_account_id
|
197
|
+
body[:game_account_id] = game_account_id if game_account_id
|
198
|
+
body[:game_id] = game_id if game_id
|
199
|
+
opts[:body] = body.to_json
|
200
|
+
return do_request("/subscription_price_overrides/delete", conn, opts)
|
201
|
+
end
|
202
|
+
|
203
|
+
def self.upsert_price_override(master_account_id, game_account_id, game_id, override_price, conn = connection, opts ={}, reload = false)
|
204
|
+
opts = opts_work(opts)
|
205
|
+
opts[:reload] ||= reload
|
206
|
+
opts[:method] = :post
|
207
|
+
opts[:body] = {:master_account_id => master_account_id,
|
208
|
+
:game_account_id => game_account_id,
|
209
|
+
:game_id => game_id,
|
210
|
+
:override_price => override_price}.to_json
|
211
|
+
return do_request("/subscription_price_overrides/upsert", conn, opts)
|
212
|
+
end
|
213
|
+
|
214
|
+
def self.update_renew_price_by_game_account(game_account_id, price, conn = connection, opts ={}, reload = false)
|
215
|
+
opts = opts_work(opts)
|
216
|
+
opts[:reload] ||= reload
|
217
|
+
opts[:method] = :post
|
218
|
+
opts[:body] = {:price => price}.to_json
|
219
|
+
return do_request("/subscriptions/update_renew_price_by_game_account/#{game_account_id}", conn, opts)
|
220
|
+
end
|
221
|
+
|
222
|
+
def self.clear_cache_for_account(account)
|
223
|
+
cache.clear("active-m-account-sub-#{account}")
|
224
|
+
cache.clear("all-m-account-sub-#{account}")
|
225
|
+
return true
|
226
|
+
end
|
227
|
+
|
228
|
+
def self.clear_cache_for_subscription(sub_id)
|
229
|
+
cache.clear("sub-#{sub_id}")
|
230
|
+
return true
|
231
|
+
end
|
232
|
+
|
233
|
+
private
|
234
|
+
@@auth_opts = { "Authorization" => "Token token=#{settings[:api_key]}" }
|
235
|
+
|
236
|
+
def self.opts_work(opts, key = nil)
|
237
|
+
if opts[:headers].nil?
|
238
|
+
opts[:headers] = @@auth_opts
|
239
|
+
else
|
240
|
+
opts[:headers].merge(@@auth_opts)
|
241
|
+
end
|
242
|
+
opts[:key] = key if key
|
243
|
+
return opts
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|