trophy_api_client 1.0.35 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7e733021198dea1940f317242551238106a113bbcacdc42842c1f0a1bac227a
4
- data.tar.gz: b7c8c709ec771024cff3b54e77d4f1df7a8644a1b64e2be2c470256aee08d214
3
+ metadata.gz: 2eaf3a319672f092fa93d7ffe2ece952a7985823368161cef8271f07f5af7b57
4
+ data.tar.gz: 4d49f9784188682c249b707cd9192d7d90637fd38b551625b29ee0e5aa33d607
5
5
  SHA512:
6
- metadata.gz: edb848789103d0159d69f8fe6b852e562bf408f47ae7724dce1984b5d03715f7fc0135975214c787425d13821ddc2dc047fe6a356a4879671af79cba9f721287
7
- data.tar.gz: 0117550ff5bfc745e68c913d18304861ae75b460c62391cda21b08cb21cae56a141f87457e5dd91f04e9f846af4fe3fd7875bdf11e0c6bf1d26131a68e3f78ef
6
+ metadata.gz: 1af2a8abf9c52a8e5ea7287f14abdc4176d013f4c4e7f52601d9fd823ddd8cc732204996e87592e2d0f9bfad33c4b2813caf180c0def5c876c3649d938c4638f
7
+ data.tar.gz: 31f76b9458bac7cabe5fb9b85e9b1f4d89236f1af8de9ebf54697e4f763be764ce24ebdc25f9af978dbc7f4910a4ca086a462802a04ebeb1e78704c424cc73bb
data/lib/gemconfig.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  module TrophyApiClient
4
4
  module Gemconfig
5
- VERSION = "1.0.35"
5
+ VERSION = "1.0.38"
6
6
  AUTHORS = ["Trophy Labs, Inc"].freeze
7
7
  EMAIL = ""
8
8
  SUMMARY = "Ruby library for the Trophy API."
@@ -6,24 +6,24 @@ require_relative "streaks/client"
6
6
  module TrophyApiClient
7
7
  module Admin
8
8
  class Client
9
- # @return [TrophyApiClient::Admin::Streaks::Client]
10
- attr_reader :admin
9
+ # @return [TrophyApiClient::Admin::StreaksClient]
10
+ attr_reader :streaks
11
11
 
12
12
  # @param request_client [TrophyApiClient::RequestClient]
13
13
  # @return [TrophyApiClient::Admin::Client]
14
14
  def initialize(request_client:)
15
- @admin = TrophyApiClient::Admin::Streaks::Client.new(request_client: request_client)
15
+ @streaks = TrophyApiClient::Admin::StreaksClient.new(request_client: request_client)
16
16
  end
17
17
  end
18
18
 
19
19
  class AsyncClient
20
- # @return [TrophyApiClient::Admin::Streaks::AsyncClient]
21
- attr_reader :admin
20
+ # @return [TrophyApiClient::Admin::AsyncStreaksClient]
21
+ attr_reader :streaks
22
22
 
23
23
  # @param request_client [TrophyApiClient::AsyncRequestClient]
24
24
  # @return [TrophyApiClient::Admin::AsyncClient]
25
25
  def initialize(request_client:)
26
- @admin = TrophyApiClient::Admin::Streaks::AsyncClient.new(request_client: request_client)
26
+ @streaks = TrophyApiClient::Admin::AsyncStreaksClient.new(request_client: request_client)
27
27
  end
28
28
  end
29
29
  end
@@ -1,30 +1,95 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../../../requests"
4
- require_relative "freezes/client"
4
+ require_relative "../../types/restore_streaks_response"
5
+ require "async"
5
6
 
6
7
  module TrophyApiClient
7
8
  module Admin
8
- module Streaks
9
- class Client
10
- # @return [TrophyApiClient::Admin::Streaks::FreezesClient]
11
- attr_reader :freezes
9
+ class StreaksClient
10
+ # @return [TrophyApiClient::RequestClient]
11
+ attr_reader :request_client
12
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)
13
+ # @param request_client [TrophyApiClient::RequestClient]
14
+ # @return [TrophyApiClient::Admin::StreaksClient]
15
+ def initialize(request_client:)
16
+ @request_client = request_client
17
+ end
18
+
19
+ # Restore streaks for multiple users to the maximum length in the last 90 days (in
20
+ # the case of daily streaks), one year (in the case of weekly streaks), or two
21
+ # years (in the case of monthly streaks).
22
+ #
23
+ # @param user_ids [Array<String>] Array of user IDs to restore streaks for. Maximum 100 users per request.
24
+ # @param request_options [TrophyApiClient::RequestOptions]
25
+ # @return [TrophyApiClient::RestoreStreaksResponse]
26
+ # @example
27
+ # api = TrophyApiClient::Client.new(
28
+ # base_url: "https://api.example.com",
29
+ # environment: TrophyApiClient::Environment::PRODUCTION,
30
+ # api_key: "YOUR_API_KEY"
31
+ # )
32
+ # api.admin.streaks.restore(user_ids: ["user-123", "user-456"])
33
+ def restore(user_ids:, request_options: nil)
34
+ response = @request_client.conn.post do |req|
35
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
36
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
37
+ req.headers = {
38
+ **(req.headers || {}),
39
+ **@request_client.get_headers,
40
+ **(request_options&.additional_headers || {})
41
+ }.compact
42
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
43
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
44
+ end
45
+ req.body = { **(request_options&.additional_body_parameters || {}), userIds: user_ids }.compact
46
+ req.url "#{@request_client.get_url(environment: admin, request_options: request_options)}/streaks/restore"
17
47
  end
48
+ TrophyApiClient::RestoreStreaksResponse.from_json(json_object: response.body)
18
49
  end
50
+ end
19
51
 
20
- class AsyncClient
21
- # @return [TrophyApiClient::Admin::Streaks::AsyncFreezesClient]
22
- attr_reader :freezes
52
+ class AsyncStreaksClient
53
+ # @return [TrophyApiClient::AsyncRequestClient]
54
+ attr_reader :request_client
55
+
56
+ # @param request_client [TrophyApiClient::AsyncRequestClient]
57
+ # @return [TrophyApiClient::Admin::AsyncStreaksClient]
58
+ def initialize(request_client:)
59
+ @request_client = request_client
60
+ end
23
61
 
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)
62
+ # Restore streaks for multiple users to the maximum length in the last 90 days (in
63
+ # the case of daily streaks), one year (in the case of weekly streaks), or two
64
+ # years (in the case of monthly streaks).
65
+ #
66
+ # @param user_ids [Array<String>] Array of user IDs to restore streaks for. Maximum 100 users per request.
67
+ # @param request_options [TrophyApiClient::RequestOptions]
68
+ # @return [TrophyApiClient::RestoreStreaksResponse]
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.restore(user_ids: ["user-123", "user-456"])
76
+ def restore(user_ids:, 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 || {}), userIds: user_ids }.compact
90
+ req.url "#{@request_client.get_url(environment: admin, request_options: request_options)}/streaks/restore"
91
+ end
92
+ TrophyApiClient::RestoreStreaksResponse.from_json(json_object: response.body)
28
93
  end
29
94
  end
30
95
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative "metric_event_streak_response"
4
4
  require "date"
5
+ require_relative "achievement_with_stats_response_user_attributes_item"
6
+ require_relative "achievement_with_stats_response_event_attribute"
5
7
  require_relative "achievement_response_trigger"
6
8
  require "ostruct"
7
9
  require "json"
@@ -10,8 +12,19 @@ module TrophyApiClient
10
12
  class AchievementCompletionResponseAchievement
11
13
  # @return [TrophyApiClient::MetricEventStreakResponse] The user's current streak for the metric, if the metric has streaks enabled.
12
14
  attr_reader :current_streak
13
- # @return [DateTime] The date and time the achievement was completed, in ISO 8601 format.
15
+ # @return [DateTime] The date and time the achievement was completed, in ISO 8601 format. Null if the
16
+ # achievement has not been completed.
14
17
  attr_reader :achieved_at
18
+ # @return [Integer] The number of users who have completed this achievement.
19
+ attr_reader :completions
20
+ # @return [Float] The percentage of all users who have completed this achievement.
21
+ attr_reader :rarity
22
+ # @return [Array<TrophyApiClient::AchievementWithStatsResponseUserAttributesItem>] User attribute filters that must be met for this achievement to be completed.
23
+ # Only present if the achievement has user attribute filters configured.
24
+ attr_reader :user_attributes
25
+ # @return [TrophyApiClient::AchievementWithStatsResponseEventAttribute] Event attribute filter that must be met for this achievement to be completed.
26
+ # Only present if the achievement has an event filter configured.
27
+ attr_reader :event_attribute
15
28
  # @return [String] The unique ID of the achievement.
16
29
  attr_reader :id
17
30
  # @return [String] The name of this achievement.
@@ -46,7 +59,14 @@ module TrophyApiClient
46
59
  OMIT = Object.new
47
60
 
48
61
  # @param current_streak [TrophyApiClient::MetricEventStreakResponse] The user's current streak for the metric, if the metric has streaks enabled.
49
- # @param achieved_at [DateTime] The date and time the achievement was completed, in ISO 8601 format.
62
+ # @param achieved_at [DateTime] The date and time the achievement was completed, in ISO 8601 format. Null if the
63
+ # achievement has not been completed.
64
+ # @param completions [Integer] The number of users who have completed this achievement.
65
+ # @param rarity [Float] The percentage of all users who have completed this achievement.
66
+ # @param user_attributes [Array<TrophyApiClient::AchievementWithStatsResponseUserAttributesItem>] User attribute filters that must be met for this achievement to be completed.
67
+ # Only present if the achievement has user attribute filters configured.
68
+ # @param event_attribute [TrophyApiClient::AchievementWithStatsResponseEventAttribute] Event attribute filter that must be met for this achievement to be completed.
69
+ # Only present if the achievement has an event filter configured.
50
70
  # @param id [String] The unique ID of the achievement.
51
71
  # @param name [String] The name of this achievement.
52
72
  # @param trigger [TrophyApiClient::AchievementResponseTrigger] The trigger of the achievement.
@@ -64,10 +84,14 @@ module TrophyApiClient
64
84
  # trigger = 'metric')
65
85
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
66
86
  # @return [TrophyApiClient::AchievementCompletionResponseAchievement]
67
- def initialize(achieved_at:, id:, name:, trigger:, key:, current_streak: OMIT, description: OMIT, badge_url: OMIT,
68
- streak_length: OMIT, metric_id: OMIT, metric_value: OMIT, metric_name: OMIT, additional_properties: nil)
87
+ def initialize(completions:, rarity:, id:, name:, trigger:, key:, current_streak: OMIT, achieved_at: OMIT, user_attributes: OMIT,
88
+ event_attribute: OMIT, description: OMIT, badge_url: OMIT, streak_length: OMIT, metric_id: OMIT, metric_value: OMIT, metric_name: OMIT, additional_properties: nil)
69
89
  @current_streak = current_streak if current_streak != OMIT
70
- @achieved_at = achieved_at
90
+ @achieved_at = achieved_at if achieved_at != OMIT
91
+ @completions = completions
92
+ @rarity = rarity
93
+ @user_attributes = user_attributes if user_attributes != OMIT
94
+ @event_attribute = event_attribute if event_attribute != OMIT
71
95
  @id = id
72
96
  @name = name
73
97
  @trigger = trigger
@@ -82,6 +106,10 @@ module TrophyApiClient
82
106
  @_field_set = {
83
107
  "currentStreak": current_streak,
84
108
  "achievedAt": achieved_at,
109
+ "completions": completions,
110
+ "rarity": rarity,
111
+ "userAttributes": user_attributes,
112
+ "eventAttribute": event_attribute,
85
113
  "id": id,
86
114
  "name": name,
87
115
  "trigger": trigger,
@@ -112,6 +140,18 @@ module TrophyApiClient
112
140
  current_streak = TrophyApiClient::MetricEventStreakResponse.from_json(json_object: current_streak)
113
141
  end
114
142
  achieved_at = (DateTime.parse(parsed_json["achievedAt"]) unless parsed_json["achievedAt"].nil?)
143
+ completions = parsed_json["completions"]
144
+ rarity = parsed_json["rarity"]
145
+ user_attributes = parsed_json["userAttributes"]&.map do |item|
146
+ item = item.to_json
147
+ TrophyApiClient::AchievementWithStatsResponseUserAttributesItem.from_json(json_object: item)
148
+ end
149
+ if parsed_json["eventAttribute"].nil?
150
+ event_attribute = nil
151
+ else
152
+ event_attribute = parsed_json["eventAttribute"].to_json
153
+ event_attribute = TrophyApiClient::AchievementWithStatsResponseEventAttribute.from_json(json_object: event_attribute)
154
+ end
115
155
  id = parsed_json["id"]
116
156
  name = parsed_json["name"]
117
157
  trigger = parsed_json["trigger"]
@@ -125,6 +165,10 @@ module TrophyApiClient
125
165
  new(
126
166
  current_streak: current_streak,
127
167
  achieved_at: achieved_at,
168
+ completions: completions,
169
+ rarity: rarity,
170
+ user_attributes: user_attributes,
171
+ event_attribute: event_attribute,
128
172
  id: id,
129
173
  name: name,
130
174
  trigger: trigger,
@@ -155,7 +199,11 @@ module TrophyApiClient
155
199
  # @return [Void]
156
200
  def self.validate_raw(obj:)
157
201
  obj.current_streak.nil? || TrophyApiClient::MetricEventStreakResponse.validate_raw(obj: obj.current_streak)
158
- obj.achieved_at.is_a?(DateTime) != false || raise("Passed value for field obj.achieved_at is not the expected type, validation failed.")
202
+ obj.achieved_at&.is_a?(DateTime) != false || raise("Passed value for field obj.achieved_at is not the expected type, validation failed.")
203
+ obj.completions.is_a?(Integer) != false || raise("Passed value for field obj.completions is not the expected type, validation failed.")
204
+ obj.rarity.is_a?(Float) != false || raise("Passed value for field obj.rarity is not the expected type, validation failed.")
205
+ obj.user_attributes&.is_a?(Array) != false || raise("Passed value for field obj.user_attributes is not the expected type, validation failed.")
206
+ obj.event_attribute.nil? || TrophyApiClient::AchievementWithStatsResponseEventAttribute.validate_raw(obj: obj.event_attribute)
159
207
  obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
160
208
  obj.name.is_a?(String) != false || raise("Passed value for field obj.name is not the expected type, validation failed.")
161
209
  obj.trigger.is_a?(TrophyApiClient::AchievementResponseTrigger) != false || raise("Passed value for field obj.trigger is not the expected type, validation failed.")
@@ -1,14 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "date"
4
+ require_relative "achievement_with_stats_response_user_attributes_item"
5
+ require_relative "achievement_with_stats_response_event_attribute"
4
6
  require_relative "achievement_response_trigger"
5
7
  require "ostruct"
6
8
  require "json"
7
9
 
8
10
  module TrophyApiClient
9
11
  class CompletedAchievementResponse
10
- # @return [DateTime] The date and time the achievement was completed, in ISO 8601 format.
12
+ # @return [DateTime] The date and time the achievement was completed, in ISO 8601 format. Null if the
13
+ # achievement has not been completed.
11
14
  attr_reader :achieved_at
15
+ # @return [Integer] The number of users who have completed this achievement.
16
+ attr_reader :completions
17
+ # @return [Float] The percentage of all users who have completed this achievement.
18
+ attr_reader :rarity
19
+ # @return [Array<TrophyApiClient::AchievementWithStatsResponseUserAttributesItem>] User attribute filters that must be met for this achievement to be completed.
20
+ # Only present if the achievement has user attribute filters configured.
21
+ attr_reader :user_attributes
22
+ # @return [TrophyApiClient::AchievementWithStatsResponseEventAttribute] Event attribute filter that must be met for this achievement to be completed.
23
+ # Only present if the achievement has an event filter configured.
24
+ attr_reader :event_attribute
12
25
  # @return [String] The unique ID of the achievement.
13
26
  attr_reader :id
14
27
  # @return [String] The name of this achievement.
@@ -42,7 +55,14 @@ module TrophyApiClient
42
55
 
43
56
  OMIT = Object.new
44
57
 
45
- # @param achieved_at [DateTime] The date and time the achievement was completed, in ISO 8601 format.
58
+ # @param achieved_at [DateTime] The date and time the achievement was completed, in ISO 8601 format. Null if the
59
+ # achievement has not been completed.
60
+ # @param completions [Integer] The number of users who have completed this achievement.
61
+ # @param rarity [Float] The percentage of all users who have completed this achievement.
62
+ # @param user_attributes [Array<TrophyApiClient::AchievementWithStatsResponseUserAttributesItem>] User attribute filters that must be met for this achievement to be completed.
63
+ # Only present if the achievement has user attribute filters configured.
64
+ # @param event_attribute [TrophyApiClient::AchievementWithStatsResponseEventAttribute] Event attribute filter that must be met for this achievement to be completed.
65
+ # Only present if the achievement has an event filter configured.
46
66
  # @param id [String] The unique ID of the achievement.
47
67
  # @param name [String] The name of this achievement.
48
68
  # @param trigger [TrophyApiClient::AchievementResponseTrigger] The trigger of the achievement.
@@ -60,9 +80,13 @@ module TrophyApiClient
60
80
  # trigger = 'metric')
61
81
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
62
82
  # @return [TrophyApiClient::CompletedAchievementResponse]
63
- def initialize(achieved_at:, id:, name:, trigger:, key:, description: OMIT, badge_url: OMIT, streak_length: OMIT,
64
- metric_id: OMIT, metric_value: OMIT, metric_name: OMIT, additional_properties: nil)
65
- @achieved_at = achieved_at
83
+ def initialize(completions:, rarity:, id:, name:, trigger:, key:, achieved_at: OMIT, user_attributes: OMIT,
84
+ event_attribute: OMIT, description: OMIT, badge_url: OMIT, streak_length: OMIT, metric_id: OMIT, metric_value: OMIT, metric_name: OMIT, additional_properties: nil)
85
+ @achieved_at = achieved_at if achieved_at != OMIT
86
+ @completions = completions
87
+ @rarity = rarity
88
+ @user_attributes = user_attributes if user_attributes != OMIT
89
+ @event_attribute = event_attribute if event_attribute != OMIT
66
90
  @id = id
67
91
  @name = name
68
92
  @trigger = trigger
@@ -76,6 +100,10 @@ module TrophyApiClient
76
100
  @additional_properties = additional_properties
77
101
  @_field_set = {
78
102
  "achievedAt": achieved_at,
103
+ "completions": completions,
104
+ "rarity": rarity,
105
+ "userAttributes": user_attributes,
106
+ "eventAttribute": event_attribute,
79
107
  "id": id,
80
108
  "name": name,
81
109
  "trigger": trigger,
@@ -99,6 +127,18 @@ module TrophyApiClient
99
127
  struct = JSON.parse(json_object, object_class: OpenStruct)
100
128
  parsed_json = JSON.parse(json_object)
101
129
  achieved_at = (DateTime.parse(parsed_json["achievedAt"]) unless parsed_json["achievedAt"].nil?)
130
+ completions = parsed_json["completions"]
131
+ rarity = parsed_json["rarity"]
132
+ user_attributes = parsed_json["userAttributes"]&.map do |item|
133
+ item = item.to_json
134
+ TrophyApiClient::AchievementWithStatsResponseUserAttributesItem.from_json(json_object: item)
135
+ end
136
+ if parsed_json["eventAttribute"].nil?
137
+ event_attribute = nil
138
+ else
139
+ event_attribute = parsed_json["eventAttribute"].to_json
140
+ event_attribute = TrophyApiClient::AchievementWithStatsResponseEventAttribute.from_json(json_object: event_attribute)
141
+ end
102
142
  id = parsed_json["id"]
103
143
  name = parsed_json["name"]
104
144
  trigger = parsed_json["trigger"]
@@ -111,6 +151,10 @@ module TrophyApiClient
111
151
  metric_name = parsed_json["metricName"]
112
152
  new(
113
153
  achieved_at: achieved_at,
154
+ completions: completions,
155
+ rarity: rarity,
156
+ user_attributes: user_attributes,
157
+ event_attribute: event_attribute,
114
158
  id: id,
115
159
  name: name,
116
160
  trigger: trigger,
@@ -139,7 +183,11 @@ module TrophyApiClient
139
183
  # @param obj [Object]
140
184
  # @return [Void]
141
185
  def self.validate_raw(obj:)
142
- obj.achieved_at.is_a?(DateTime) != false || raise("Passed value for field obj.achieved_at is not the expected type, validation failed.")
186
+ obj.achieved_at&.is_a?(DateTime) != false || raise("Passed value for field obj.achieved_at is not the expected type, validation failed.")
187
+ obj.completions.is_a?(Integer) != false || raise("Passed value for field obj.completions is not the expected type, validation failed.")
188
+ obj.rarity.is_a?(Float) != false || raise("Passed value for field obj.rarity is not the expected type, validation failed.")
189
+ obj.user_attributes&.is_a?(Array) != false || raise("Passed value for field obj.user_attributes is not the expected type, validation failed.")
190
+ obj.event_attribute.nil? || TrophyApiClient::AchievementWithStatsResponseEventAttribute.validate_raw(obj: obj.event_attribute)
143
191
  obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
144
192
  obj.name.is_a?(String) != false || raise("Passed value for field obj.name is not the expected type, validation failed.")
145
193
  obj.trigger.is_a?(TrophyApiClient::AchievementResponseTrigger) != false || raise("Passed value for field obj.trigger is not the expected type, validation failed.")
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "bulk_insert_issue"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module TrophyApiClient
8
+ # Response containing restored users and any issues encountered.
9
+ class RestoreStreaksResponse
10
+ # @return [Array<String>] Array of user IDs whose streaks were successfully restored.
11
+ attr_reader :restored_users
12
+ # @return [Array<TrophyApiClient::BulkInsertIssue>] Array of issues encountered during streak restoration.
13
+ attr_reader :issues
14
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
15
+ attr_reader :additional_properties
16
+ # @return [Object]
17
+ attr_reader :_field_set
18
+ protected :_field_set
19
+
20
+ OMIT = Object.new
21
+
22
+ # @param restored_users [Array<String>] Array of user IDs whose streaks were successfully restored.
23
+ # @param issues [Array<TrophyApiClient::BulkInsertIssue>] Array of issues encountered during streak restoration.
24
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
25
+ # @return [TrophyApiClient::RestoreStreaksResponse]
26
+ def initialize(restored_users:, issues:, additional_properties: nil)
27
+ @restored_users = restored_users
28
+ @issues = issues
29
+ @additional_properties = additional_properties
30
+ @_field_set = { "restoredUsers": restored_users, "issues": issues }
31
+ end
32
+
33
+ # Deserialize a JSON object to an instance of RestoreStreaksResponse
34
+ #
35
+ # @param json_object [String]
36
+ # @return [TrophyApiClient::RestoreStreaksResponse]
37
+ def self.from_json(json_object:)
38
+ struct = JSON.parse(json_object, object_class: OpenStruct)
39
+ parsed_json = JSON.parse(json_object)
40
+ restored_users = parsed_json["restoredUsers"]
41
+ issues = parsed_json["issues"]&.map do |item|
42
+ item = item.to_json
43
+ TrophyApiClient::BulkInsertIssue.from_json(json_object: item)
44
+ end
45
+ new(
46
+ restored_users: restored_users,
47
+ issues: issues,
48
+ additional_properties: struct
49
+ )
50
+ end
51
+
52
+ # Serialize an instance of RestoreStreaksResponse to a JSON object
53
+ #
54
+ # @return [String]
55
+ def to_json(*_args)
56
+ @_field_set&.to_json
57
+ end
58
+
59
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
60
+ # hash and check each fields type against the current object's property
61
+ # definitions.
62
+ #
63
+ # @param obj [Object]
64
+ # @return [Void]
65
+ def self.validate_raw(obj:)
66
+ obj.restored_users.is_a?(Array) != false || raise("Passed value for field obj.restored_users is not the expected type, validation failed.")
67
+ obj.issues.is_a?(Array) != false || raise("Passed value for field obj.issues is not the expected type, validation failed.")
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "wrapped_most_active_day"
4
+ require_relative "wrapped_most_active_week"
5
+ require_relative "wrapped_most_active_month"
6
+ require_relative "wrapped_entire_year"
7
+ require "ostruct"
8
+ require "json"
9
+
10
+ module TrophyApiClient
11
+ # The user's activity summary for the wrapped year.
12
+ class WrappedActivity
13
+ # @return [Integer] The number of days the user was active during the year.
14
+ attr_reader :days_active
15
+ # @return [Integer] The number of weeks the user was active during the year.
16
+ attr_reader :weeks_active
17
+ # @return [Integer] The number of months the user was active during the year.
18
+ attr_reader :months_active
19
+ # @return [TrophyApiClient::WrappedMostActiveDay] Data about the user's most active day.
20
+ attr_reader :most_active_day
21
+ # @return [TrophyApiClient::WrappedMostActiveWeek] Data about the user's most active week.
22
+ attr_reader :most_active_week
23
+ # @return [TrophyApiClient::WrappedMostActiveMonth] Data about the user's most active month.
24
+ attr_reader :most_active_month
25
+ # @return [TrophyApiClient::WrappedEntireYear] Data about the user's activity for the entire year.
26
+ attr_reader :entire_year
27
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
28
+ attr_reader :additional_properties
29
+ # @return [Object]
30
+ attr_reader :_field_set
31
+ protected :_field_set
32
+
33
+ OMIT = Object.new
34
+
35
+ # @param days_active [Integer] The number of days the user was active during the year.
36
+ # @param weeks_active [Integer] The number of weeks the user was active during the year.
37
+ # @param months_active [Integer] The number of months the user was active during the year.
38
+ # @param most_active_day [TrophyApiClient::WrappedMostActiveDay] Data about the user's most active day.
39
+ # @param most_active_week [TrophyApiClient::WrappedMostActiveWeek] Data about the user's most active week.
40
+ # @param most_active_month [TrophyApiClient::WrappedMostActiveMonth] Data about the user's most active month.
41
+ # @param entire_year [TrophyApiClient::WrappedEntireYear] Data about the user's activity for the entire year.
42
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
43
+ # @return [TrophyApiClient::WrappedActivity]
44
+ def initialize(days_active:, weeks_active:, months_active:, most_active_day:, most_active_week:,
45
+ most_active_month:, entire_year:, additional_properties: nil)
46
+ @days_active = days_active
47
+ @weeks_active = weeks_active
48
+ @months_active = months_active
49
+ @most_active_day = most_active_day
50
+ @most_active_week = most_active_week
51
+ @most_active_month = most_active_month
52
+ @entire_year = entire_year
53
+ @additional_properties = additional_properties
54
+ @_field_set = {
55
+ "daysActive": days_active,
56
+ "weeksActive": weeks_active,
57
+ "monthsActive": months_active,
58
+ "mostActiveDay": most_active_day,
59
+ "mostActiveWeek": most_active_week,
60
+ "mostActiveMonth": most_active_month,
61
+ "entireYear": entire_year
62
+ }
63
+ end
64
+
65
+ # Deserialize a JSON object to an instance of WrappedActivity
66
+ #
67
+ # @param json_object [String]
68
+ # @return [TrophyApiClient::WrappedActivity]
69
+ def self.from_json(json_object:)
70
+ struct = JSON.parse(json_object, object_class: OpenStruct)
71
+ parsed_json = JSON.parse(json_object)
72
+ days_active = parsed_json["daysActive"]
73
+ weeks_active = parsed_json["weeksActive"]
74
+ months_active = parsed_json["monthsActive"]
75
+ if parsed_json["mostActiveDay"].nil?
76
+ most_active_day = nil
77
+ else
78
+ most_active_day = parsed_json["mostActiveDay"].to_json
79
+ most_active_day = TrophyApiClient::WrappedMostActiveDay.from_json(json_object: most_active_day)
80
+ end
81
+ if parsed_json["mostActiveWeek"].nil?
82
+ most_active_week = nil
83
+ else
84
+ most_active_week = parsed_json["mostActiveWeek"].to_json
85
+ most_active_week = TrophyApiClient::WrappedMostActiveWeek.from_json(json_object: most_active_week)
86
+ end
87
+ if parsed_json["mostActiveMonth"].nil?
88
+ most_active_month = nil
89
+ else
90
+ most_active_month = parsed_json["mostActiveMonth"].to_json
91
+ most_active_month = TrophyApiClient::WrappedMostActiveMonth.from_json(json_object: most_active_month)
92
+ end
93
+ if parsed_json["entireYear"].nil?
94
+ entire_year = nil
95
+ else
96
+ entire_year = parsed_json["entireYear"].to_json
97
+ entire_year = TrophyApiClient::WrappedEntireYear.from_json(json_object: entire_year)
98
+ end
99
+ new(
100
+ days_active: days_active,
101
+ weeks_active: weeks_active,
102
+ months_active: months_active,
103
+ most_active_day: most_active_day,
104
+ most_active_week: most_active_week,
105
+ most_active_month: most_active_month,
106
+ entire_year: entire_year,
107
+ additional_properties: struct
108
+ )
109
+ end
110
+
111
+ # Serialize an instance of WrappedActivity to a JSON object
112
+ #
113
+ # @return [String]
114
+ def to_json(*_args)
115
+ @_field_set&.to_json
116
+ end
117
+
118
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
119
+ # hash and check each fields type against the current object's property
120
+ # definitions.
121
+ #
122
+ # @param obj [Object]
123
+ # @return [Void]
124
+ def self.validate_raw(obj:)
125
+ obj.days_active.is_a?(Integer) != false || raise("Passed value for field obj.days_active is not the expected type, validation failed.")
126
+ obj.weeks_active.is_a?(Integer) != false || raise("Passed value for field obj.weeks_active is not the expected type, validation failed.")
127
+ obj.months_active.is_a?(Integer) != false || raise("Passed value for field obj.months_active is not the expected type, validation failed.")
128
+ TrophyApiClient::WrappedMostActiveDay.validate_raw(obj: obj.most_active_day)
129
+ TrophyApiClient::WrappedMostActiveWeek.validate_raw(obj: obj.most_active_week)
130
+ TrophyApiClient::WrappedMostActiveMonth.validate_raw(obj: obj.most_active_month)
131
+ TrophyApiClient::WrappedEntireYear.validate_raw(obj: obj.entire_year)
132
+ end
133
+ end
134
+ end