class RocketChat::Messages::User

Rocket.Chat User messages

Attributes

session[R]

Public Class Methods

new(session) click to toggle source

@param [Session] session Session

# File lib/rocket_chat/messages/user.rb, line 15
def initialize(session)
  @session = session
end

Public Instance Methods

create(username, email, name, password, options = {}) click to toggle source

users.create REST API @param [String] username Username @param [String] email Email @param [String] name Name @param [String] password Password @param [Hash] options Additional options @return [User] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 29
def create(username, email, name, password, options = {})
  response = session.request_json(
    '/api/v1/users.create',
    method: :post,
    body: {
      username: username,
      email: email,
      name: name,
      password: password
    }.merge(user_option_hash(options))
  )
  RocketChat::User.new response['user']
end
create_token(user_id: nil, username: nil) click to toggle source

users.createToken REST API @param [String] user_id Rocket.Chat user id @param [String] username Username @return [RocketChat::Token] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 50
def create_token(user_id: nil, username: nil)
  response = session.request_json(
    '/api/v1/users.createToken',
    method: :post,
    body: user_params(user_id, username)
  )
  RocketChat::Token.new response['data']
end
delete(user_id: nil, username: nil) click to toggle source

users.delete REST API @param [String] user_id Rocket.Chat user id @param [String] username Username @return [Boolean] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 85
def delete(user_id: nil, username: nil)
  session.request_json(
    '/api/v1/users.delete',
    method: :post,
    body: user_params(user_id, username),
    upstreamed_errors: ['error-invalid-user']
  )['success']
end
get_presence(user_id: nil, username: nil) click to toggle source

users.getPresence REST API @param [String] user_id Rocket.Chat user id @param [String] username Username @return [PresenceStatus] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 140
def get_presence(user_id: nil, username: nil)
  response = session.request_json(
    '/api/v1/users.getPresence',
    body: user_params(user_id, username)
  )

  RocketChat::PresenceStatus.new response if response['success']
end
info(user_id: nil, username: nil, include_rooms: false) click to toggle source

users.info REST API @param [String] user_id Rocket.Chat user id @param [String] username Username @param [Boolean] include_rooms Whether to include rooms in the response.

Requires calling user to have the `view-other-user-channels` permission

@return [User] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 122
def info(user_id: nil, username: nil, include_rooms: false)
  response = session.request_json(
    '/api/v1/users.info',
    body: user_params(user_id, username)
      .merge(include_rooms ? { fields: { userRooms: 1 }.to_json } : {}),
    upstreamed_errors: ['error-invalid-user']
  )

  RocketChat::User.new response['user'] if response['success']
end
list(offset: nil, count: nil, sort: nil, fields: nil, query: nil) click to toggle source

users.list REST API @param [Integer] offset Query offset @param [Integer] count Query count/limit @param [Hash] sort Query field sort hash. eg `{ active: 1, email: -1 }` @param [Hash] fields Query fields to return. eg `{ name: 1, email: 0 }` @param [Hash] query The query. `{ active: true, type: { '$in': ['user', 'bot'] } }` @return [User @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 104
def list(offset: nil, count: nil, sort: nil, fields: nil, query: nil)
  response = session.request_json(
    '/api/v1/users.list',
    body: build_list_body(offset, count, sort, fields, query)
  )

  response['users'].map { |hash| RocketChat::User.new hash } if response['success']
end
reset_avatar(user_id: nil, username: nil) click to toggle source

users.resetAvatar REST API @param [String] user_id user to update (optional) @param [String] username Username (optional) @return [Boolean] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 173
def reset_avatar(user_id: nil, username: nil)
  session.request_json(
    '/api/v1/users.resetAvatar',
    method: :post,
    body: user_params(user_id, username)
  )['success']
end
set_avatar(avatar_url, user_id: nil) click to toggle source

users.setAvatar REST API @param [String] avatar_url URL to use for avatar @param [String] user_id user to update (optional) @return [Boolean] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 156
def set_avatar(avatar_url, user_id: nil)
  body = { avatarUrl: avatar_url }
  body[:userId] = user_id if user_id
  session.request_json(
    '/api/v1/users.setAvatar',
    method: :post,
    body: body
  )['success']
end
update(id, options = {}) click to toggle source

users.update REST API @param [String] id Rocket.Chat user id @param [Hash] options User properties to update @return [User] @raise [HTTPError, StatusError]

# File lib/rocket_chat/messages/user.rb, line 66
def update(id, options = {})
  response = session.request_json(
    '/api/v1/users.update',
    method: :post,
    body: {
      userId: id,
      data: user_option_hash(options, include_personal_fields: true)
    }
  )
  RocketChat::User.new response['user']
end

Private Instance Methods

user_option_hash(options, include_personal_fields: false) click to toggle source
# File lib/rocket_chat/messages/user.rb, line 185
def user_option_hash(options, include_personal_fields: false)
  args = [options, :active, :roles, :join_default_channels, :require_password_change,
          :send_welcome_email, :verified, :custom_fields]
  args += %i[username email name password] if include_personal_fields

  options = Util.slice_hash(*args)
  return {} if options.empty?

  new_hash = {}
  options.each { |key, value| new_hash[Util.camelize(key)] = value }
  new_hash
end