Class: RocketChat::Messages::Room

Inherits:
Object
  • Object
show all
Includes:
RoomSupport, UserSupport
Defined in:
lib/rocket_chat/messages/room.rb

Overview

Rocket.Chat Room messages template (groups&channels)

Direct Known Subclasses

Channel, Group

Constant Summary collapse

API_PREFIX =
'/api/v1'

Class Method Summary collapse

Instance Method Summary collapse

Methods included from UserSupport

#user_params

Methods included from RoomSupport

#room_params, #room_query_params

Constructor Details

#initialize(session) ⇒ Room

Returns a new instance of Room.

Parameters:



26
27
28
# File 'lib/rocket_chat/messages/room.rb', line 26

def initialize(session)
  @session = session
end

Class Method Details

.api_path(method) ⇒ Object

Full API path to call



31
32
33
# File 'lib/rocket_chat/messages/room.rb', line 31

def self.api_path(method)
  "#{API_PREFIX}/#{collection}.#{method}"
end

.inherited(subclass) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/rocket_chat/messages/room.rb', line 14

def self.inherited(subclass)
  field = subclass.name.split('::')[-1].downcase
  collection = "#{field}s"
  subclass.send(:define_singleton_method, :field) { field }
  subclass.send(:define_singleton_method, :collection) { collection }

  super
end

Instance Method Details

#add_all(room_id: nil, name: nil, active_users_only: false) ⇒ Boolean

*.addAll REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • active_users_only (String) (defaults to: false)

    Add active users only

Returns:

  • (Boolean)

Raises:



77
78
79
80
81
82
83
84
# File 'lib/rocket_chat/messages/room.rb', line 77

def add_all(room_id: nil, name: nil, active_users_only: false)
  session.request_json(
    self.class.api_path('addAll'),
    method: :post,
    body: room_params(room_id, name)
            .merge(activeUsersOnly: active_users_only)
  )['success']
end

#add_moderator(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.add_moderator REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



131
132
133
134
135
136
137
138
# File 'lib/rocket_chat/messages/room.rb', line 131

def add_moderator(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('addModerator'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#add_owner(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.add_owner REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



95
96
97
98
99
100
101
102
# File 'lib/rocket_chat/messages/room.rb', line 95

def add_owner(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('addOwner'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#archive(room_id: nil, name: nil) ⇒ Boolean

*.archive REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

Returns:

  • (Boolean)

Raises:



218
219
220
221
222
223
224
# File 'lib/rocket_chat/messages/room.rb', line 218

def archive(room_id: nil, name: nil)
  session.request_json(
    self.class.api_path('archive'),
    method: :post,
    body: room_params(room_id, name)
  )['success']
end

#create(name, options = {}) ⇒ Room

*.create REST API

Parameters:

  • name (String)

    Room name

  • options (Hash) (defaults to: {})

    Additional options

Returns:

Raises:



42
43
44
45
46
47
48
49
50
51
# File 'lib/rocket_chat/messages/room.rb', line 42

def create(name, options = {})
  response = session.request_json(
    self.class.api_path('create'),
    method: :post,
    body: {
      name: name
    }.merge(room_option_hash(options))
  )
  RocketChat::Room.new response[self.class.field]
end

#delete(room_id: nil, name: nil) ⇒ Boolean

*.delete REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

Returns:

  • (Boolean)

Raises:



60
61
62
63
64
65
66
67
# File 'lib/rocket_chat/messages/room.rb', line 60

def delete(room_id: nil, name: nil)
  session.request_json(
    self.class.api_path('delete'),
    method: :post,
    body: room_params(room_id, name),
    upstreamed_errors: ['error-room-not-found']
  )['success']
end

#info(room_id: nil, name: nil) ⇒ Room

*.info REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Room name (channels since 0.56)

Returns:

Raises:



165
166
167
168
169
170
171
172
173
# File 'lib/rocket_chat/messages/room.rb', line 165

def info(room_id: nil, name: nil)
  response = session.request_json(
    self.class.api_path('info'),
    body: room_params(room_id, name),
    upstreamed_errors: ['error-room-not-found']
  )

  RocketChat::Room.new response[self.class.field] if response['success']
end

#invite(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.invite REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



184
185
186
187
188
189
190
191
# File 'lib/rocket_chat/messages/room.rb', line 184

def invite(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('invite'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#kick(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.kick REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



202
203
204
205
206
207
208
209
# File 'lib/rocket_chat/messages/room.rb', line 202

def kick(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('kick'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#leave(room_id: nil, name: nil) ⇒ Boolean

*.leave REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

Returns:

  • (Boolean)

Raises:



248
249
250
251
252
253
254
# File 'lib/rocket_chat/messages/room.rb', line 248

def leave(room_id: nil, name: nil)
  session.request_json(
    self.class.api_path('leave'),
    method: :post,
    body: room_params(room_id, name)
  )['success']
end

#members(room_id: nil, name: nil, offset: nil, count: nil, sort: nil) ⇒ Users[]

.members REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name

  • offset (Integer) (defaults to: nil)

    Query offset

  • count (Integer) (defaults to: nil)

    Query count/limit

  • sort (Hash) (defaults to: nil)

    Query field sort hash. eg ‘{ msgs: 1, name: -1 }`

Returns:

  • (Users[])

Raises:



300
301
302
303
304
305
306
307
# File 'lib/rocket_chat/messages/room.rb', line 300

def members(room_id: nil, name: nil, offset: nil, count: nil, sort: nil)
  response = session.request_json(
    self.class.api_path('members'),
    body: room_params(room_id, name).merge(build_list_body(offset, count, sort, nil, nil))
  )

  response['members'].map { |hash| RocketChat::User.new hash } if response['success']
end

#remove_moderator(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.remove_moderator REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



149
150
151
152
153
154
155
156
# File 'lib/rocket_chat/messages/room.rb', line 149

def remove_moderator(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('removeModerator'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#remove_owner(room_id: nil, name: nil, user_id: nil, username: nil) ⇒ Boolean

*.remove_owner REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

  • (Boolean)

Raises:



113
114
115
116
117
118
119
120
# File 'lib/rocket_chat/messages/room.rb', line 113

def remove_owner(room_id: nil, name: nil, user_id: nil, username: nil)
  session.request_json(
    self.class.api_path('removeOwner'),
    method: :post,
    body: room_params(room_id, name)
      .merge(user_params(user_id, username))
  )['success']
end

#rename(room_id, new_name) ⇒ Boolean

*.rename REST API

Parameters:

  • room_id (String)

    Rocket.Chat room id

  • new_name (String)

    New room name

Returns:

  • (Boolean)

Raises:



263
264
265
266
267
268
269
# File 'lib/rocket_chat/messages/room.rb', line 263

def rename(room_id, new_name)
  session.request_json(
    self.class.api_path('rename'),
    method: :post,
    body: { roomId: room_id, name: new_name }
  )['success']
end

#set_attr(room_id: nil, name: nil, **setting) ⇒ Boolean

.set REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

  • setting (Hash)

    Single key-value

Returns:

  • (Boolean)

Raises:



279
280
281
282
283
284
285
286
287
288
# File 'lib/rocket_chat/messages/room.rb', line 279

def set_attr(room_id: nil, name: nil, **setting)
  attribute, value = setting.first
  validate_attribute(attribute)
  session.request_json(
    self.class.api_path(Util.camelize("set_#{attribute}")),
    method: :post,
    body: room_params(room_id, name)
      .merge(Util.camelize(attribute) => value)
  )['success']
end

#unarchive(room_id: nil, name: nil) ⇒ Boolean

*.unarchive REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat room id

  • name (String) (defaults to: nil)

    Rocket.Chat room name (coming soon)

Returns:

  • (Boolean)

Raises:



233
234
235
236
237
238
239
# File 'lib/rocket_chat/messages/room.rb', line 233

def unarchive(room_id: nil, name: nil)
  session.request_json(
    self.class.api_path('unarchive'),
    method: :post,
    body: room_params(room_id, name)
  )['success']
end

#upload_file(room_id:, file:, **rest_params) ⇒ RocketChat::Message

Parameters:

  • room_id (String)

    Rocket.Chat room id

  • file (File)

    that should be uploaded to Rocket.Chat room

  • rest_params (Hash)

    Optional params (msg, description, tmid)

Returns:

Raises:



318
319
320
321
322
323
324
325
326
# File 'lib/rocket_chat/messages/room.rb', line 318

def upload_file(room_id:, file:, **rest_params)
  response = session.request_json(
    "#{API_PREFIX}/rooms.upload/#{room_id}",
    method: :post,
    form_data: file_upload_array(file: file, **rest_params)
  )

  RocketChat::Message.new response['message'] if response['success']
end