Repository navigation
Expand file tree
/
Copy pathclient.rb
More file actions
56 lines (53 loc) · 2.01 KB
/
Copy pathclient.rb
File metadata and controls
56 lines (53 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# frozen_string_literal: true
module Trophy
module Streaks
class Client
# @param client [Trophy::Internal::Http::RawClient]
# @param base_url [String, nil]
# @param environment [Hash[Symbol, String], nil]
#
# @return [void]
def initialize(client:, base_url: nil, environment: nil)
@client = client
@base_url = base_url
@environment = environment
end
# Get the streak lengths of a list of users, ranked by streak length from longest to shortest.
#
# @param request_options [Hash]
# @param params [Hash]
# @option request_options [String] :base_url
# @option request_options [Hash{String => Object}] :additional_headers
# @option request_options [Hash{String => Object}] :additional_query_parameters
# @option request_options [Hash{String => Object}] :additional_body_parameters
# @option request_options [Integer] :timeout_in_seconds
# @option params [String, nil] :user_ids
#
# @return [Array[Trophy::Types::BulkStreakResponseItem]]
def list(request_options: {}, **params)
params = Trophy::Internal::Types::Utils.normalize_keys(params)
query_params = {}
query_params["userIds"] = params[:user_ids] if params.key?(:user_ids)
request = Trophy::Internal::JSON::Request.new(
base_url: request_options[:base_url] || @base_url || @environment&.dig(:api),
method: "GET",
path: "streaks",
query: query_params,
request_options: request_options
)
begin
response = @client.send(request)
rescue Net::HTTPRequestTimeout
raise Trophy::Errors::TimeoutError
end
code = response.code.to_i
if code.between?(200, 299)
Trophy::Types::BulkStreakResponse.load(response.body)
else
error_class = Trophy::Errors::ResponseError.subclass_for_code(code)
raise error_class.new(response.body, code: code)
end
end
end
end
end