From bd187e0ada35ef541d8ba8234d505a5ff391d901 Mon Sep 17 00:00:00 2001 From: Viktor Apostolski Date: Wed, 18 Feb 2026 11:37:36 +0100 Subject: [PATCH 1/3] add check usr profile method --- lib/getstream_ruby/client.rb | 1 + .../extensions/moderation_extensions.rb | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 lib/getstream_ruby/extensions/moderation_extensions.rb diff --git a/lib/getstream_ruby/client.rb b/lib/getstream_ruby/client.rb index f7bc9a2..7d49495 100644 --- a/lib/getstream_ruby/client.rb +++ b/lib/getstream_ruby/client.rb @@ -9,6 +9,7 @@ require_relative 'generated/common_client' require_relative 'generated/feeds_client' require_relative 'generated/moderation_client' +require_relative 'extensions/moderation_extensions' require_relative 'generated/feed' require_relative 'stream_response' diff --git a/lib/getstream_ruby/extensions/moderation_extensions.rb b/lib/getstream_ruby/extensions/moderation_extensions.rb new file mode 100644 index 0000000..e2305e7 --- /dev/null +++ b/lib/getstream_ruby/extensions/moderation_extensions.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module GetStream + module Generated + class ModerationClient + # Experimental: Check user profile + # + # Warning: This is an experimental feature and the API is subject to change. + # + # This function is used to check a user profile for moderation. + # This will not create any review queue items for the user profile. + # You can just use this to check whether to allow a certain user profile + # to be created or not. + # + # @param user_id [String] User ID to be checked + # @param profile [Hash] Profile data to be checked + # @option profile [String] :username Username to be checked + # @option profile [String] :image Image URL to be checked + # @return [GetStreamRuby::StreamResponse] + # + # @example + # client.moderation.check_user_profile('user-id', { username: 'bad_username', image: 'https://example.com/profile.jpg' }) + def check_user_profile(user_id, profile) + raise ArgumentError, 'Either username or image must be provided' if profile[:username].nil? && profile[:image].nil? + + moderation_payload = Models::ModerationPayload.new + moderation_payload.texts = [profile[:username]] if profile[:username] + moderation_payload.images = [profile[:image]] if profile[:image] + + check_request = Models::CheckRequest.new( + entity_type: 'userprofile', + entity_id: user_id, + entity_creator_id: user_id, + moderation_payload: moderation_payload, + config_key: 'user_profile:default', + options: { force_sync: true, test_mode: true } + ) + + check(check_request) + end + end + end +end From f41f6127fa18ff4011fb8763af4c77282064c986 Mon Sep 17 00:00:00 2001 From: Viktor Apostolski Date: Wed, 18 Feb 2026 13:21:55 +0100 Subject: [PATCH 2/3] lint --- .../extensions/moderation_extensions.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/getstream_ruby/extensions/moderation_extensions.rb b/lib/getstream_ruby/extensions/moderation_extensions.rb index e2305e7..f18191b 100644 --- a/lib/getstream_ruby/extensions/moderation_extensions.rb +++ b/lib/getstream_ruby/extensions/moderation_extensions.rb @@ -1,8 +1,11 @@ # frozen_string_literal: true module GetStream + module Generated + class ModerationClient + # Experimental: Check user profile # # Warning: This is an experimental feature and the API is subject to change. @@ -19,9 +22,12 @@ class ModerationClient # @return [GetStreamRuby::StreamResponse] # # @example - # client.moderation.check_user_profile('user-id', { username: 'bad_username', image: 'https://example.com/profile.jpg' }) + # client.moderation.check_user_profile('user-id', + # { username: 'bad_username', image: 'https://example.com/profile.jpg' }) def check_user_profile(user_id, profile) - raise ArgumentError, 'Either username or image must be provided' if profile[:username].nil? && profile[:image].nil? + if profile[:username].nil? && profile[:image].nil? + raise ArgumentError, 'Either username or image must be provided' + end moderation_payload = Models::ModerationPayload.new moderation_payload.texts = [profile[:username]] if profile[:username] @@ -33,11 +39,14 @@ def check_user_profile(user_id, profile) entity_creator_id: user_id, moderation_payload: moderation_payload, config_key: 'user_profile:default', - options: { force_sync: true, test_mode: true } + options: { force_sync: true, test_mode: true }, ) check(check_request) end + end + end + end From 7edcab1a3c01cde67a698d336176f629d580dd0d Mon Sep 17 00:00:00 2001 From: Viktor Apostolski Date: Wed, 18 Feb 2026 13:36:07 +0100 Subject: [PATCH 3/3] Update lib/getstream_ruby/extensions/moderation_extensions.rb Co-authored-by: itsmeadi --- lib/getstream_ruby/extensions/moderation_extensions.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/getstream_ruby/extensions/moderation_extensions.rb b/lib/getstream_ruby/extensions/moderation_extensions.rb index f18191b..2dc1ccd 100644 --- a/lib/getstream_ruby/extensions/moderation_extensions.rb +++ b/lib/getstream_ruby/extensions/moderation_extensions.rb @@ -19,7 +19,7 @@ class ModerationClient # @param profile [Hash] Profile data to be checked # @option profile [String] :username Username to be checked # @option profile [String] :image Image URL to be checked - # @return [GetStreamRuby::StreamResponse] + # @return [Models::CheckResponse] # # @example # client.moderation.check_user_profile('user-id',