mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-16 09:12:35 +00:00
Speed up API requests be using a persistent connection, increase news fetch buffer time to 30 seconds from 10 seconds.
This commit is contained in:
21
lib/api.rb
21
lib/api.rb
@@ -43,8 +43,9 @@ class W3DHub
|
|||||||
#! === W3D Hub API === !#
|
#! === W3D Hub API === !#
|
||||||
|
|
||||||
ENDPOINT = "https://secure.w3dhub.com".freeze
|
ENDPOINT = "https://secure.w3dhub.com".freeze
|
||||||
|
API_CONNECTION = Excon.new(ENDPOINT, persistent: true)
|
||||||
|
|
||||||
def self.excon(method, url, headers = DEFAULT_HEADERS, body = nil)
|
def self.excon(method, url, headers = DEFAULT_HEADERS, body = nil, api = :api)
|
||||||
logger.debug(LOG_TAG) { "Fetching #{method.to_s.upcase} \"#{url}\"..." }
|
logger.debug(LOG_TAG) { "Fetching #{method.to_s.upcase} \"#{url}\"..." }
|
||||||
|
|
||||||
# Inject Authorization header if account data is populated
|
# Inject Authorization header if account data is populated
|
||||||
@@ -54,10 +55,13 @@ class W3DHub
|
|||||||
headers["Authorization"] = "Bearer #{Store.account.access_token}"
|
headers["Authorization"] = "Bearer #{Store.account.access_token}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
connection = api == :api ? API_CONNECTION : GSH_CONNECTION
|
||||||
|
endpoint = api == :api ? ENDPOINT : SERVER_LIST_ENDPOINT
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Excon.send(
|
connection.send(
|
||||||
method,
|
method,
|
||||||
url,
|
path: url.sub(endpoint, ""),
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: body,
|
body: body,
|
||||||
nonblock: true,
|
nonblock: true,
|
||||||
@@ -82,7 +86,7 @@ class W3DHub
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.post(url, headers = DEFAULT_HEADERS, body = nil)
|
def self.post(url, headers = DEFAULT_HEADERS, body = nil, api = :api)
|
||||||
excon(:post, url, headers, body)
|
excon(:post, url, headers, body)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -258,9 +262,10 @@ class W3DHub
|
|||||||
#! === Server List API === !#
|
#! === Server List API === !#
|
||||||
|
|
||||||
SERVER_LIST_ENDPOINT = "https://gsh.w3dhub.com".freeze
|
SERVER_LIST_ENDPOINT = "https://gsh.w3dhub.com".freeze
|
||||||
|
GSH_CONNECTION = Excon.new(SERVER_LIST_ENDPOINT, persistent: true)
|
||||||
|
|
||||||
def self.get(url, headers = DEFAULT_HEADERS, body = nil)
|
def self.get(url, headers = DEFAULT_HEADERS, body = nil, api = :api)
|
||||||
excon(:get, url, headers, body)
|
excon(:get, url, headers, body, api)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Method: GET
|
# Method: GET
|
||||||
@@ -281,7 +286,7 @@ class W3DHub
|
|||||||
# ...players[]:
|
# ...players[]:
|
||||||
# nick, team (index of teams array), score, kills, deaths
|
# nick, team (index of teams array), score, kills, deaths
|
||||||
def self.server_list(level = 1)
|
def self.server_list(level = 1)
|
||||||
response = get("#{SERVER_LIST_ENDPOINT}/listings/getAll/v2?statusLevel=#{level}")
|
response = get("#{SERVER_LIST_ENDPOINT}/listings/getAll/v2?statusLevel=#{level}", DEFAULT_HEADERS, nil, :gsh)
|
||||||
|
|
||||||
if response.status == 200
|
if response.status == 200
|
||||||
data = JSON.parse(response.body, symbolize_names: true)
|
data = JSON.parse(response.body, symbolize_names: true)
|
||||||
@@ -303,7 +308,7 @@ class W3DHub
|
|||||||
# ...players[]:
|
# ...players[]:
|
||||||
# nick, team (index of teams array), score, kills, deaths
|
# nick, team (index of teams array), score, kills, deaths
|
||||||
def self.server_details(id, level)
|
def self.server_details(id, level)
|
||||||
response = get("#{SERVER_LIST_ENDPOINT}/listings/getStatus/v2/#{id}?statusLevel=#{level}")
|
response = get("#{SERVER_LIST_ENDPOINT}/listings/getStatus/v2/#{id}?statusLevel=#{level}", DEFAULT_HEADERS, nil, :gsh)
|
||||||
|
|
||||||
if response.status == 200
|
if response.status == 200
|
||||||
hash = JSON.parse(response.body, symbolize_names: true)
|
hash = JSON.parse(response.body, symbolize_names: true)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class W3DHub
|
|||||||
|
|
||||||
if Gosu.milliseconds >= @w3dhub_news_expires
|
if Gosu.milliseconds >= @w3dhub_news_expires
|
||||||
@w3dhub_news = nil
|
@w3dhub_news = nil
|
||||||
@w3dhub_news_expires = Gosu.milliseconds + 10_000 # seconds
|
@w3dhub_news_expires = Gosu.milliseconds + 30_000 # seconds
|
||||||
|
|
||||||
@wd3hub_news_container.clear do
|
@wd3hub_news_container.clear do
|
||||||
title I18n.t(:"games.fetching_news"), padding: 8
|
title I18n.t(:"games.fetching_news"), padding: 8
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class W3DHub
|
|||||||
|
|
||||||
if Gosu.milliseconds >= @game_news["#{key}_expires"]
|
if Gosu.milliseconds >= @game_news["#{key}_expires"]
|
||||||
@game_news.delete(key)
|
@game_news.delete(key)
|
||||||
@game_news["#{key}_expires"] = Gosu.milliseconds + 10_000 # seconds
|
@game_news["#{key}_expires"] = Gosu.milliseconds + 30_000 # seconds
|
||||||
|
|
||||||
if @focused_game && @focused_game.id == key
|
if @focused_game && @focused_game.id == key
|
||||||
@game_news_container.clear do
|
@game_news_container.clear do
|
||||||
|
|||||||
Reference in New Issue
Block a user