class Babili::Platform::Message

Public Class Methods

all_for_room(room_id) click to toggle source
# File lib/babili/platform/message.rb, line 8
def self.all_for_room(room_id)
  create_path                    = path.gsub(":room_id", room_id)
  messages                       = []
  previous_first_seen_message_id = false
  first_seen_message_id          = nil
  while previous_first_seen_message_id != first_seen_message_id
    previous_first_seen_message_id = first_seen_message_id
    if first_seen_message_id
      raw_messages = Babili::Client.get(create_path + "?firstSeenMessageId=#{first_seen_message_id}")
    else
      raw_messages = Babili::Client.get(create_path)
    end

    return messages if raw_messages["data"].empty?
    messages.concat(raw_messages["data"].map do |raw_message|
      message    = new(raw_message["attributes"])
      message.id = raw_message["id"]
      message
    end)
    first_seen_message_id = raw_messages["data"].first["id"]
  end
end
create(params = {}) click to toggle source
# File lib/babili/platform/message.rb, line 31
def self.create(params = {})
  room_id          = params.delete(:room_id)
  create_path      = path.gsub(":room_id", room_id)
  sender_id        = params[:sender_id] || params["sender_id"]
  formatted_params = {
    data: {
      type:          "mesage",
      id:            params[:id] || params["id"],
      relationships: {},
      attributes:    {
        content:          params[:content] || params["content"],
        content_type:     params[:content_type] || params["content_type"],
        read_by_user_ids: params[:read_by_user_ids] || params["read_by_user_ids"]
      }
    }
  }
  if sender_id
    formatted_params[:data][:relationships][:user] = {
      data: { id: sender_id }
    }
  end
  raw_message     = Babili::Client.post(create_path, formatted_params)["data"]
  message         = new(raw_message["attributes"])
  message.id      = raw_message["id"]
  message.room_id = room_id
  message
end
path() click to toggle source
# File lib/babili/platform/message.rb, line 4
def self.path
  "platform/rooms/:room_id/messages"
end

Public Instance Methods

delete() click to toggle source
# File lib/babili/platform/message.rb, line 59
def delete
  path        = self.class.path.gsub(":room_id", room_id) + "/#{id}"
  raw_message = Babili::Client.delete(path)["data"]
  message     = self.class.new(raw_message["attributes"])
  message.id  = raw_message["id"]
  message
end