Class: StreamChat::Moderation

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/stream-chat/moderation.rb

Overview

Moderation class provides all the endpoints related to moderation v2

Constant Summary collapse

MODERATION_ENTITY_TYPES =
T.let(
  {
    user: 'stream:user',
    message: 'stream:chat:v1:message'
  }.freeze,
  T::Hash[Symbol, String]
)

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Moderation

Returns a new instance of Moderation.



23
24
25
# File 'lib/stream-chat/moderation.rb', line 23

def initialize(client)
  @client = client
end

Instance Method Details

#add_custom_flags(entity_type, entity_id, moderation_payload, flags, entity_creator_id: '') ⇒ Object



227
228
229
230
231
232
233
234
235
# File 'lib/stream-chat/moderation.rb', line 227

def add_custom_flags(entity_type, entity_id, moderation_payload, flags, entity_creator_id: '')
  @client.post('api/v2/moderation/custom_check', data: {
                 entity_type: entity_type,
                 entity_id: entity_id,
                 entity_creator_id: entity_creator_id,
                 moderation_payload: moderation_payload,
                 flags: flags
               })
end

#add_custom_message_flags(message_id, flags) ⇒ Object



242
243
244
# File 'lib/stream-chat/moderation.rb', line 242

def add_custom_message_flags(message_id, flags)
  add_custom_flags(T.must(MODERATION_ENTITY_TYPES[:message]), message_id, {}, flags)
end

#check(entity_type, entity_id, moderation_payload, config_key, entity_creator_id: '', options: {}) ⇒ Object



208
209
210
211
212
213
214
215
216
217
# File 'lib/stream-chat/moderation.rb', line 208

def check(entity_type, entity_id, moderation_payload, config_key, entity_creator_id: '', options: {})
  @client.post('api/v2/moderation/check', data: {
                 entity_type: entity_type,
                 entity_id: entity_id,
                 entity_creator_id: entity_creator_id,
                 moderation_payload: moderation_payload,
                 config_key: config_key,
                 options: options
               })
end

#delete_config(key, data = {}) ⇒ Object



152
153
154
# File 'lib/stream-chat/moderation.rb', line 152

def delete_config(key, data = {})
  @client.delete("api/v2/moderation/config/#{key}", params: data)
end

#flag(entity_type, entity_id, reason, entity_creator_id: '', **options) ⇒ Object



62
63
64
65
66
67
68
69
70
# File 'lib/stream-chat/moderation.rb', line 62

def flag(entity_type, entity_id, reason, entity_creator_id: '', **options)
  @client.post('api/v2/moderation/flag', data: {
                 entity_type: entity_type,
                 entity_id: entity_id,
                 entity_creator_id: entity_creator_id,
                 reason: reason,
                 **options
               })
end

#flag_message(message_id, reason, **options) ⇒ Object



47
48
49
# File 'lib/stream-chat/moderation.rb', line 47

def flag_message(message_id, reason, **options)
  flag(T.must(MODERATION_ENTITY_TYPES[:message]), message_id, reason, **options)
end

#flag_user(flagged_user_id, reason, **options) ⇒ Object



35
36
37
# File 'lib/stream-chat/moderation.rb', line 35

def flag_user(flagged_user_id, reason, **options)
  flag(T.must(MODERATION_ENTITY_TYPES[:user]), flagged_user_id, reason, **options)
end

#get_config(key, data = {}) ⇒ Object



142
143
144
# File 'lib/stream-chat/moderation.rb', line 142

def get_config(key, data = {})
  @client.get("api/v2/moderation/config/#{key}", params: data)
end

#get_user_moderation_report(user_id, **options) ⇒ Object



107
108
109
110
111
112
# File 'lib/stream-chat/moderation.rb', line 107

def get_user_moderation_report(user_id, **options)
  @client.get('api/v2/moderation/user_report', params: {
                user_id: user_id,
                **options
              })
end

#mute_user(target_id, **options) ⇒ Object



79
80
81
82
83
84
# File 'lib/stream-chat/moderation.rb', line 79

def mute_user(target_id, **options)
  @client.post('api/v2/moderation/mute', data: {
                 target_ids: [target_id],
                 **options
               })
end

#query_configs(filter_conditions, sort, **options) ⇒ Object



162
163
164
165
166
167
168
# File 'lib/stream-chat/moderation.rb', line 162

def query_configs(filter_conditions, sort, **options)
  @client.post('api/v2/moderation/configs', data: {
                 filter: filter_conditions,
                 sort: sort,
                 **options
               })
end

#query_review_queue(filter_conditions = {}, sort = [], **options) ⇒ Object



120
121
122
123
124
125
126
# File 'lib/stream-chat/moderation.rb', line 120

def query_review_queue(filter_conditions = {}, sort = [], **options)
  @client.post('api/v2/moderation/review_queue', data: {
                 filter: filter_conditions,
                 sort: StreamChat.get_sort_fields(sort),
                 **options
               })
end

#submit_action(action_type, item_id, **options) ⇒ Object



176
177
178
179
180
181
182
# File 'lib/stream-chat/moderation.rb', line 176

def submit_action(action_type, item_id, **options)
  @client.post('api/v2/moderation/submit_action', data: {
                 action_type: action_type,
                 item_id: item_id,
                 **options
               })
end

#unmute_user(target_id, **options) ⇒ Object



92
93
94
95
96
97
# File 'lib/stream-chat/moderation.rb', line 92

def unmute_user(target_id, **options)
  @client.post('api/v2/moderation/unmute', data: {
                 target_ids: [target_id],
                 **options
               })
end

#upsert_config(config) ⇒ Object



132
133
134
# File 'lib/stream-chat/moderation.rb', line 132

def upsert_config(config)
  @client.post('api/v2/moderation/config', data: config)
end