module MixinBot::API::Conversation

Public Instance Methods

add_conversation_participants(conversation_id:, user_ids:, access_token: nil) click to toggle source

participants = [{ user_id: “” }]

# File lib/mixin_bot/api/conversation.rb, line 80
def add_conversation_participants(conversation_id:, user_ids:, access_token: nil)
  path = format('/conversations/%<id>s/participants/ADD', id: conversation_id)
  payload = user_ids.map(&->(participant) { { user_id: participant } })

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end
conversation(conversation_id) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 6
def conversation(conversation_id)
  path = format('/conversations/%<conversation_id>s', conversation_id: conversation_id)
  access_token ||= access_token('GET', path, '')
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.get(path, headers: { 'Authorization': authorization })
end
Also aliased as: read_conversation
conversation_by_user_id(user_id) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 14
def conversation_by_user_id(user_id)
  conversation_id = unique_conversation_id(user_id)
  read_conversation(conversation_id)
end
Also aliased as: read_conversation_by_user_id
create_contact_conversation(user_id, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 44
def create_contact_conversation(user_id, access_token: nil)
  create_conversation(
    category: 'CONTACT',
    conversation_id: unique_conversation_id(user_id),
    participants: [
      {
        user_id: user_id
      }
    ],
    access_token: access_token
  )
end
create_conversation(category:, conversation_id:, participants:, name: nil, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 20
def create_conversation(category:, conversation_id:, participants:, name: nil, access_token: nil)
  path = '/conversations'
  payload = {
    category: category,
    conversation_id: conversation_id || SecureRandom.uuid,
    name: name,
    participants: participants
  }

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end
create_group_conversation(user_ids:, name:, conversation_id: nil, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 34
def create_group_conversation(user_ids:, name:, conversation_id: nil, access_token: nil)
  create_conversation(
    category: 'GROUP',
    conversation_id: conversation_id,
    name: name,
    participants: user_ids.map(&->(participant) { { user_id: participant } }),
    access_token: access_token
  )
end
exit_conversation(conversation_id, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 99
def exit_conversation(conversation_id, access_token: nil)
  path = format('/conversations/%<id>s/exit', id: conversation_id)

  access_token ||= access_token('POST', path)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization })
end
read_conversation(conversation_id)
Alias for: conversation
read_conversation_by_user_id(user_id)
remove_conversation_participants(conversation_id:, user_ids:, access_token: nil) click to toggle source

participants = [{ user_id: “” }]

# File lib/mixin_bot/api/conversation.rb, line 90
def remove_conversation_participants(conversation_id:, user_ids:, access_token: nil)
  path = format('/conversations/%<id>s/participants/REMOVE', id: conversation_id)
  payload = user_ids.map(&->(participant) { { user_id: participant } })

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end
rotate_conversation(conversation_id, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 107
def rotate_conversation(conversation_id, access_token: nil)
  path = format('/conversations/%<id>s/rotate', id: conversation_id)

  access_token ||= access_token('POST', path)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization })
end
unique_conversation_id(user_id, opponent_id = nil)
Alias for: unique_uuid
unique_uuid(user_id, opponent_id = nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 125
def unique_uuid(user_id, opponent_id = nil)
  opponent_id ||= client_id
  md5 = Digest::MD5.new
  md5 << [user_id, opponent_id].min
  md5 << [user_id, opponent_id].max
  digest = md5.digest
  digest6 = (digest[6].ord & 0x0f | 0x30).chr
  digest8 = (digest[8].ord & 0x3f | 0x80).chr
  cipher = digest[0...6] + digest6 + digest[7] + digest8 + digest[9..]
  hex = cipher.unpack1('H*')

  format(
    '%<first>s-%<second>s-%<third>s-%<forth>s-%<fifth>s',
    first: hex[0..7],
    second: hex[8..11],
    third: hex[12..15],
    forth: hex[16..19],
    fifth: hex[20..]
  )
end
Also aliased as: unique_conversation_id
update_conversation_participants_role(conversation_id:, participants:, access_token: nil) click to toggle source

participants = [{ user_id: “”, role: “ADMIN” }]

# File lib/mixin_bot/api/conversation.rb, line 116
def update_conversation_participants_role(conversation_id:, participants:, access_token: nil)
  path = format('/conversations/%<id>s/participants/ROLE', id: conversation_id)
  payload = participants

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end
update_group_conversation_announcement(announcement:, conversation_id:, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 68
def update_group_conversation_announcement(announcement:, conversation_id:, access_token: nil)
  path = format('/conversations/%<id>s', id: conversation_id)
  payload = {
    announcement: announcement
  }

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end
update_group_conversation_name(name:, conversation_id:, access_token: nil) click to toggle source
# File lib/mixin_bot/api/conversation.rb, line 57
def update_group_conversation_name(name:, conversation_id:, access_token: nil)
  path = format('/conversations/%<id>s', id: conversation_id)
  payload = {
    name: name
  }

  access_token ||= access_token('POST', path, payload.to_json)
  authorization = format('Bearer %<access_token>s', access_token: access_token)
  client.post(path, headers: { 'Authorization': authorization }, json: payload)
end