Class: RocketChat::Messages::User

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

Overview

Rocket.Chat User messages

Instance Method Summary collapse

Methods included from UserSupport

#user_params

Constructor Details

#initialize(session) ⇒ User

Returns a new instance of User.

Parameters:



15
16
17
# File 'lib/rocket_chat/messages/user.rb', line 15

def initialize(session)
  @session = session
end

Instance Method Details

#create(username, email, name, password, options = {}) ⇒ User

users.create REST API

Parameters:

  • username (String)

    Username

  • email (String)

    Email

  • name (String)

    Name

  • password (String)

    Password

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

    Additional options

Returns:

Raises:



29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) ⇒ RocketChat::Token

users.createToken REST API

Parameters:

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Username

Returns:

Raises:



50
51
52
53
54
55
56
57
# 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) ⇒ Boolean

users.delete REST API

Parameters:

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Username

Returns:

  • (Boolean)

Raises:



85
86
87
88
89
90
91
92
# 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) ⇒ PresenceStatus

users.getPresence REST API

Parameters:

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Username

Returns:

Raises:



140
141
142
143
144
145
146
147
# 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) ⇒ User

users.info REST API

Parameters:

  • user_id (String) (defaults to: nil)

    Rocket.Chat user id

  • username (String) (defaults to: nil)

    Username

  • include_rooms (Boolean) (defaults to: false)

    Whether to include rooms in the response. Requires calling user to have the `view-other-user-channels` permission

Returns:

Raises:



122
123
124
125
126
127
128
129
130
131
# 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) ⇒ User[]

users.list REST API

Parameters:

  • 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 `{ active: 1, email: -1 }`

  • fields (Hash) (defaults to: nil)

    Query fields to return. eg `{ name: 1, email: 0 }`

  • query (Hash) (defaults to: nil)

    The query. `{ active: true, type: { '$in': ['user', 'bot'] } }`

Returns:

Raises:



104
105
106
107
108
109
110
111
# 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) ⇒ Boolean

users.resetAvatar REST API

Parameters:

  • user_id (String) (defaults to: nil)

    user to update (optional)

  • username (String) (defaults to: nil)

    Username (optional)

Returns:

  • (Boolean)

Raises:



173
174
175
176
177
178
179
# 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) ⇒ Boolean

users.setAvatar REST API

Parameters:

  • avatar_url (String)

    URL to use for avatar

  • user_id (String) (defaults to: nil)

    user to update (optional)

Returns:

  • (Boolean)

Raises:



156
157
158
159
160
161
162
163
164
# 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 = {}) ⇒ User

users.update REST API

Parameters:

  • id (String)

    Rocket.Chat user id

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

    User properties to update

Returns:

Raises:



66
67
68
69
70
71
72
73
74
75
76
# 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