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

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:



24
25
26
# File 'lib/rocket_chat/messages/room.rb', line 24

def initialize(session)
  @session = session
end

Class Method Details

.api_path(method) ⇒ Object

Full API path to call



29
30
31
# File 'lib/rocket_chat/messages/room.rb', line 29

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

.inherited(subclass) ⇒ Object



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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