mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2026-05-06 17:38:18 +00:00
110 lines
2.6 KiB
Ruby
110 lines
2.6 KiB
Ruby
module W3DHubLauncher
|
|
class W3DHubApi
|
|
API_TIMEOUT = 30 # seconds
|
|
API_CONNECT_TIMEOUT = 10 # seconds
|
|
|
|
PRIMARY_W3DHUB_API_ENDPOINT = "https://secure.w3dhub.com".freeze
|
|
ALTERNATIVE_W3DHUB_API_ENDPOINT = "https://backend.w3d.cyberarm.dev".freeze
|
|
|
|
def initialize
|
|
@access_token = nil
|
|
end
|
|
|
|
def headers(form_encoded: false)
|
|
end
|
|
|
|
# return raw response to requester
|
|
def fetch(url, method: :get, body: nil, headers: headers())
|
|
result = CyberarmEngine::Result.new
|
|
|
|
Sync do |task|
|
|
task.with_timeout(API_TIMEOUT) do
|
|
Async::HTTP::Internet.send(method, url, headers, body) do |response|
|
|
result.data = response.read
|
|
rescue StandardError => e
|
|
result.error = e
|
|
end
|
|
rescue Async::TimeoutError
|
|
result.error = e
|
|
end
|
|
end
|
|
|
|
result
|
|
end
|
|
|
|
# write response to file, periodically reporting progress to requester
|
|
def download(url, path:, method: :get, body: nil, headers: headers(), &block)
|
|
result = CyberarmEngine::Result.new
|
|
|
|
Sync do |task|
|
|
task.with_timeout(API_TIMEOUT) do
|
|
Async::HTTP::Internet.send(method, url, headers, body) do |response|
|
|
if response.success?
|
|
content_length = response.headers["content-length"] || 0
|
|
|
|
total_downloaded_bytes = 0
|
|
File.open(path, "wb") do |file|
|
|
response.each do |chunk|
|
|
file.write(chunk)
|
|
downloaded_bytes = chunk.length
|
|
total_downloaded_bytes += downloaded_bytes
|
|
|
|
block&.call(downloaded_bytes, total_downloaded_bytes, content_length)
|
|
end
|
|
end
|
|
|
|
result.data = true
|
|
end
|
|
rescue StandardError => e
|
|
result.error = e
|
|
end
|
|
rescue Async::TimeoutError
|
|
result.error = e
|
|
end
|
|
end
|
|
|
|
result
|
|
end
|
|
|
|
def user_login()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def refresh_user_login()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_user_details()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_applications
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_news()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_events()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_manifest()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_manifests()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_package_details()
|
|
result = CyberarmEngine::Result.new
|
|
end
|
|
|
|
def fetch_package()
|
|
download()
|
|
end
|
|
end
|
|
end
|