Skip to content

Commit 4ef4421

Browse files
Automatically update Ruby SDK
1 parent 5114a1e commit 4ef4421

23 files changed

Lines changed: 631 additions & 105 deletions

lib/environment.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
module TrophyApiClient
44
class Environment
5-
DEFAULT = "https://app.trophy.so/api"
5+
PRODUCTION = { api: "api.trophy.so", admin: "admin.trophy.so" }.freeze
66
end
77
end

lib/gemconfig.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
module TrophyApiClient
44
module Gemconfig
5-
VERSION = "1.0.27"
5+
VERSION = "1.0.28"
66
AUTHORS = ["Trophy Labs, Inc"].freeze
77
EMAIL = ""
88
SUMMARY = "Ruby library for the Trophy API."

lib/requests.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@ class RequestClient
2222
# @param timeout_in_seconds [Long]
2323
# @param api_key [String]
2424
# @return [TrophyApiClient::RequestClient]
25-
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::DEFAULT, max_retries: nil,
25+
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::PRODUCTION, max_retries: nil,
2626
timeout_in_seconds: nil)
2727
@default_environment = environment
28-
@base_url = environment || base_url
2928
@api_key = api_key
3029
@conn = Faraday.new do |faraday|
3130
faraday.request :json
@@ -36,9 +35,10 @@ def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environmen
3635
end
3736

3837
# @param request_options [TrophyApiClient::RequestOptions]
38+
# @param environment [String]
3939
# @return [String]
40-
def get_url(request_options: nil)
41-
request_options&.base_url || @default_environment || @base_url
40+
def get_url(environment:, request_options: nil)
41+
request_options&.base_url || @default_environment[environment] || @base_url
4242
end
4343

4444
# @return [Hash{String => String}]
@@ -65,10 +65,9 @@ class AsyncRequestClient
6565
# @param timeout_in_seconds [Long]
6666
# @param api_key [String]
6767
# @return [TrophyApiClient::AsyncRequestClient]
68-
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::DEFAULT, max_retries: nil,
68+
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::PRODUCTION, max_retries: nil,
6969
timeout_in_seconds: nil)
7070
@default_environment = environment
71-
@base_url = environment || base_url
7271
@api_key = api_key
7372
@conn = Faraday.new do |faraday|
7473
faraday.request :json
@@ -80,9 +79,10 @@ def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environmen
8079
end
8180

8281
# @param request_options [TrophyApiClient::RequestOptions]
82+
# @param environment [String]
8383
# @return [String]
84-
def get_url(request_options: nil)
85-
request_options&.base_url || @default_environment || @base_url
84+
def get_url(environment:, request_options: nil)
85+
request_options&.base_url || @default_environment[environment] || @base_url
8686
end
8787

8888
# @return [Hash{String => String}]

lib/trophy_api_client.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
require_relative "trophy_api_client/streaks/client"
1010
require_relative "trophy_api_client/points/client"
1111
require_relative "trophy_api_client/leaderboards/client"
12+
require_relative "trophy_api_client/admin/client"
1213

1314
module TrophyApiClient
1415
class Client
@@ -24,14 +25,16 @@ class Client
2425
attr_reader :points
2526
# @return [TrophyApiClient::LeaderboardsClient]
2627
attr_reader :leaderboards
28+
# @return [TrophyApiClient::Admin::Client]
29+
attr_reader :admin
2730

2831
# @param base_url [String]
2932
# @param environment [TrophyApiClient::Environment]
3033
# @param max_retries [Long] The number of times to retry a failed request, defaults to 2.
3134
# @param timeout_in_seconds [Long]
3235
# @param api_key [String]
3336
# @return [TrophyApiClient::Client]
34-
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::DEFAULT, max_retries: nil,
37+
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::PRODUCTION, max_retries: nil,
3538
timeout_in_seconds: nil)
3639
@request_client = TrophyApiClient::RequestClient.new(
3740
base_url: base_url,
@@ -46,6 +49,7 @@ def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environmen
4649
@streaks = TrophyApiClient::StreaksClient.new(request_client: @request_client)
4750
@points = TrophyApiClient::PointsClient.new(request_client: @request_client)
4851
@leaderboards = TrophyApiClient::LeaderboardsClient.new(request_client: @request_client)
52+
@admin = TrophyApiClient::Admin::Client.new(request_client: @request_client)
4953
end
5054
end
5155

@@ -62,14 +66,16 @@ class AsyncClient
6266
attr_reader :points
6367
# @return [TrophyApiClient::AsyncLeaderboardsClient]
6468
attr_reader :leaderboards
69+
# @return [TrophyApiClient::Admin::AsyncClient]
70+
attr_reader :admin
6571

6672
# @param base_url [String]
6773
# @param environment [TrophyApiClient::Environment]
6874
# @param max_retries [Long] The number of times to retry a failed request, defaults to 2.
6975
# @param timeout_in_seconds [Long]
7076
# @param api_key [String]
7177
# @return [TrophyApiClient::AsyncClient]
72-
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::DEFAULT, max_retries: nil,
78+
def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environment::PRODUCTION, max_retries: nil,
7379
timeout_in_seconds: nil)
7480
@async_request_client = TrophyApiClient::AsyncRequestClient.new(
7581
base_url: base_url,
@@ -84,6 +90,7 @@ def initialize(api_key:, base_url: nil, environment: TrophyApiClient::Environmen
8490
@streaks = TrophyApiClient::AsyncStreaksClient.new(request_client: @async_request_client)
8591
@points = TrophyApiClient::AsyncPointsClient.new(request_client: @async_request_client)
8692
@leaderboards = TrophyApiClient::AsyncLeaderboardsClient.new(request_client: @async_request_client)
93+
@admin = TrophyApiClient::Admin::AsyncClient.new(request_client: @async_request_client)
8794
end
8895
end
8996
end

lib/trophy_api_client/achievements/client.rb

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def initialize(request_client:)
2525
# @example
2626
# api = TrophyApiClient::Client.new(
2727
# base_url: "https://api.example.com",
28-
# environment: TrophyApiClient::Environment::DEFAULT,
28+
# environment: TrophyApiClient::Environment::PRODUCTION,
2929
# api_key: "YOUR_API_KEY"
3030
# )
3131
# api.achievements.all
@@ -44,7 +44,7 @@ def all(request_options: nil)
4444
unless request_options.nil? || request_options&.additional_body_parameters.nil?
4545
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
4646
end
47-
req.url "#{@request_client.get_url(request_options: request_options)}/achievements"
47+
req.url "#{@request_client.get_url(environment: api, request_options: request_options)}/achievements"
4848
end
4949
parsed_json = JSON.parse(response.body)
5050
parsed_json&.map do |item|
@@ -69,7 +69,7 @@ def all(request_options: nil)
6969
# @example
7070
# api = TrophyApiClient::Client.new(
7171
# base_url: "https://api.example.com",
72-
# environment: TrophyApiClient::Environment::DEFAULT,
72+
# environment: TrophyApiClient::Environment::PRODUCTION,
7373
# api_key: "YOUR_API_KEY"
7474
# )
7575
# api.achievements.complete(key: "finish-onboarding", user: { email: "user@example.com", tz: "Europe/London", id: "user-id" })
@@ -86,7 +86,8 @@ def complete(key:, user:, request_options: nil)
8686
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
8787
end
8888
req.body = { **(request_options&.additional_body_parameters || {}), user: user }.compact
89-
req.url "#{@request_client.get_url(request_options: request_options)}/achievements/#{key}/complete"
89+
req.url "#{@request_client.get_url(environment: api,
90+
request_options: request_options)}/achievements/#{key}/complete"
9091
end
9192
TrophyApiClient::AchievementCompletionResponse.from_json(json_object: response.body)
9293
end
@@ -109,7 +110,7 @@ def initialize(request_client:)
109110
# @example
110111
# api = TrophyApiClient::Client.new(
111112
# base_url: "https://api.example.com",
112-
# environment: TrophyApiClient::Environment::DEFAULT,
113+
# environment: TrophyApiClient::Environment::PRODUCTION,
113114
# api_key: "YOUR_API_KEY"
114115
# )
115116
# api.achievements.all
@@ -129,7 +130,7 @@ def all(request_options: nil)
129130
unless request_options.nil? || request_options&.additional_body_parameters.nil?
130131
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
131132
end
132-
req.url "#{@request_client.get_url(request_options: request_options)}/achievements"
133+
req.url "#{@request_client.get_url(environment: api, request_options: request_options)}/achievements"
133134
end
134135
parsed_json = JSON.parse(response.body)
135136
parsed_json&.map do |item|
@@ -155,7 +156,7 @@ def all(request_options: nil)
155156
# @example
156157
# api = TrophyApiClient::Client.new(
157158
# base_url: "https://api.example.com",
158-
# environment: TrophyApiClient::Environment::DEFAULT,
159+
# environment: TrophyApiClient::Environment::PRODUCTION,
159160
# api_key: "YOUR_API_KEY"
160161
# )
161162
# api.achievements.complete(key: "finish-onboarding", user: { email: "user@example.com", tz: "Europe/London", id: "user-id" })
@@ -173,7 +174,8 @@ def complete(key:, user:, request_options: nil)
173174
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
174175
end
175176
req.body = { **(request_options&.additional_body_parameters || {}), user: user }.compact
176-
req.url "#{@request_client.get_url(request_options: request_options)}/achievements/#{key}/complete"
177+
req.url "#{@request_client.get_url(environment: api,
178+
request_options: request_options)}/achievements/#{key}/complete"
177179
end
178180
TrophyApiClient::AchievementCompletionResponse.from_json(json_object: response.body)
179181
end
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "../../requests"
4+
require_relative "streaks/client"
5+
6+
module TrophyApiClient
7+
module Admin
8+
class Client
9+
# @return [TrophyApiClient::Admin::Streaks::Client]
10+
attr_reader :admin
11+
12+
# @param request_client [TrophyApiClient::RequestClient]
13+
# @return [TrophyApiClient::Admin::Client]
14+
def initialize(request_client:)
15+
@admin = TrophyApiClient::Admin::Streaks::Client.new(request_client: request_client)
16+
end
17+
end
18+
19+
class AsyncClient
20+
# @return [TrophyApiClient::Admin::Streaks::AsyncClient]
21+
attr_reader :admin
22+
23+
# @param request_client [TrophyApiClient::AsyncRequestClient]
24+
# @return [TrophyApiClient::Admin::AsyncClient]
25+
def initialize(request_client:)
26+
@admin = TrophyApiClient::Admin::Streaks::AsyncClient.new(request_client: request_client)
27+
end
28+
end
29+
end
30+
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "../../../requests"
4+
require_relative "freezes/client"
5+
6+
module TrophyApiClient
7+
module Admin
8+
module Streaks
9+
class Client
10+
# @return [TrophyApiClient::Admin::Streaks::FreezesClient]
11+
attr_reader :freezes
12+
13+
# @param request_client [TrophyApiClient::RequestClient]
14+
# @return [TrophyApiClient::Admin::Streaks::Client]
15+
def initialize(request_client:)
16+
@freezes = TrophyApiClient::Admin::Streaks::FreezesClient.new(request_client: request_client)
17+
end
18+
end
19+
20+
class AsyncClient
21+
# @return [TrophyApiClient::Admin::Streaks::AsyncFreezesClient]
22+
attr_reader :freezes
23+
24+
# @param request_client [TrophyApiClient::AsyncRequestClient]
25+
# @return [TrophyApiClient::Admin::Streaks::AsyncClient]
26+
def initialize(request_client:)
27+
@freezes = TrophyApiClient::Admin::Streaks::AsyncFreezesClient.new(request_client: request_client)
28+
end
29+
end
30+
end
31+
end
32+
end
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "../../../../requests"
4+
require_relative "types/create_streak_freezes_request_freezes_item"
5+
require_relative "../../../types/create_streak_freezes_response"
6+
require "async"
7+
8+
module TrophyApiClient
9+
module Admin
10+
module Streaks
11+
class FreezesClient
12+
# @return [TrophyApiClient::RequestClient]
13+
attr_reader :request_client
14+
15+
# @param request_client [TrophyApiClient::RequestClient]
16+
# @return [TrophyApiClient::Admin::Streaks::FreezesClient]
17+
def initialize(request_client:)
18+
@request_client = request_client
19+
end
20+
21+
# Create streak freezes for multiple users.
22+
#
23+
# @param freezes [Array<Hash>] Array of freezes to create. Maximum 1,000 freezes per request.Request of type Array<TrophyApiClient::Admin::Streaks::Freezes::CreateStreakFreezesRequestFreezesItem>, as a Hash
24+
# * :user_id (String)
25+
# @param request_options [TrophyApiClient::RequestOptions]
26+
# @return [TrophyApiClient::CreateStreakFreezesResponse]
27+
# @example
28+
# api = TrophyApiClient::Client.new(
29+
# base_url: "https://api.example.com",
30+
# environment: TrophyApiClient::Environment::PRODUCTION,
31+
# api_key: "YOUR_API_KEY"
32+
# )
33+
# api.admin.streaks.freezes.create(freezes: [{ user_id: "user-123" }, { user_id: "user-456" }, { user_id: "user-123" }])
34+
def create(freezes:, request_options: nil)
35+
response = @request_client.conn.post do |req|
36+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
37+
req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
38+
req.headers = {
39+
**(req.headers || {}),
40+
**@request_client.get_headers,
41+
**(request_options&.additional_headers || {})
42+
}.compact
43+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
44+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
45+
end
46+
req.body = { **(request_options&.additional_body_parameters || {}), freezes: freezes }.compact
47+
req.url "#{@request_client.get_url(environment: admin, request_options: request_options)}/streaks/freezes"
48+
end
49+
TrophyApiClient::CreateStreakFreezesResponse.from_json(json_object: response.body)
50+
end
51+
end
52+
53+
class AsyncFreezesClient
54+
# @return [TrophyApiClient::AsyncRequestClient]
55+
attr_reader :request_client
56+
57+
# @param request_client [TrophyApiClient::AsyncRequestClient]
58+
# @return [TrophyApiClient::Admin::Streaks::AsyncFreezesClient]
59+
def initialize(request_client:)
60+
@request_client = request_client
61+
end
62+
63+
# Create streak freezes for multiple users.
64+
#
65+
# @param freezes [Array<Hash>] Array of freezes to create. Maximum 1,000 freezes per request.Request of type Array<TrophyApiClient::Admin::Streaks::Freezes::CreateStreakFreezesRequestFreezesItem>, as a Hash
66+
# * :user_id (String)
67+
# @param request_options [TrophyApiClient::RequestOptions]
68+
# @return [TrophyApiClient::CreateStreakFreezesResponse]
69+
# @example
70+
# api = TrophyApiClient::Client.new(
71+
# base_url: "https://api.example.com",
72+
# environment: TrophyApiClient::Environment::PRODUCTION,
73+
# api_key: "YOUR_API_KEY"
74+
# )
75+
# api.admin.streaks.freezes.create(freezes: [{ user_id: "user-123" }, { user_id: "user-456" }, { user_id: "user-123" }])
76+
def create(freezes:, request_options: nil)
77+
Async do
78+
response = @request_client.conn.post do |req|
79+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
80+
req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
81+
req.headers = {
82+
**(req.headers || {}),
83+
**@request_client.get_headers,
84+
**(request_options&.additional_headers || {})
85+
}.compact
86+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
87+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
88+
end
89+
req.body = { **(request_options&.additional_body_parameters || {}), freezes: freezes }.compact
90+
req.url "#{@request_client.get_url(environment: admin, request_options: request_options)}/streaks/freezes"
91+
end
92+
TrophyApiClient::CreateStreakFreezesResponse.from_json(json_object: response.body)
93+
end
94+
end
95+
end
96+
end
97+
end
98+
end

0 commit comments

Comments
 (0)