Class: RocketChat::Messages::Im

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

Overview

Rocket.Chat Direct messages

Instance Method Summary collapse

Constructor Details

#initialize(session) ⇒ Im

Returns a new instance of Im.

Parameters:



14
15
16
# File 'lib/rocket_chat/messages/im.rb', line 14

def initialize(session)
  @session = session
end

Instance Method Details

#counters(room_id:, username: nil) ⇒ RocketChat::ImSummary

im.counters REST API

Parameters:

  • room_id (String)

    Rocket.Chat roomId

  • username (String) (defaults to: nil)

    Rocket.Chat username

Returns:

Raises:



85
86
87
88
89
90
91
92
93
94
# File 'lib/rocket_chat/messages/im.rb', line 85

def counters(room_id:, username: nil)
  response = session.request_json(
    '/api/v1/im.counters',
    body: {
      roomId: room_id,
      username: username
    }
  )
  RocketChat::ImSummary.new response
end

#create(username: nil, usernames: nil, exclude_self: false) ⇒ RocketChat::Room

im.create REST API

Parameters:

  • username (String) (defaults to: nil)

    Rocket.Chat username

  • usernames (String[]) (defaults to: nil)

    Array of Rocket.Chat usernames

  • exclude_self (Boolean) (defaults to: false)

    Flag indicating whether the authenticated user should be included in the group

Returns:

Raises:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rocket_chat/messages/im.rb', line 26

def create(username: nil, usernames: nil, exclude_self: false)
  params =
    if exclude_self
      { usernames: usernames.join(','), excludeSelf: true }
    elsif usernames
      { usernames: usernames.join(',') }
    else
      { username: username }
    end

  response = session.request_json(
    '/api/v1/im.create',
    method: :post,
    body: params
  )
  RocketChat::Room.new response['room']
end

#delete(room_id: nil) ⇒ Boolean

im.delete REST API

Parameters:

  • room_id (String) (defaults to: nil)

    Rocket.Chat direct message room ID

Returns:

  • (Boolean)

Raises:



50
51
52
53
54
55
56
57
# File 'lib/rocket_chat/messages/im.rb', line 50

def delete(room_id: nil)
  session.request_json(
    '/api/v1/im.delete',
    method: :post,
    body: { roomId: room_id },
    upstreamed_errors: ['error-room-not-found']
  )['success']
end

#list_everyone(offset: nil, count: nil, sort: nil, fields: nil, query: nil) ⇒ Room[]

im.list.everyone 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 ‘{ msgs: 1, name: -1 }`

  • fields (Hash) (defaults to: nil)

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

  • query (Hash) (defaults to: nil)

    The query. ‘{ active: true, type: { ’$in’: [‘name’, ‘general’] } }‘

Returns:

Raises:



69
70
71
72
73
74
75
76
# File 'lib/rocket_chat/messages/im.rb', line 69

def list_everyone(offset: nil, count: nil, sort: nil, fields: nil, query: nil)
  response = session.request_json(
    '/api/v1/im.list.everyone',
    body: build_list_body(offset, count, sort, fields, query)
  )

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