Validate 'from' and 'to' tokens in client /messages endpoint
This commit is contained in:
parent
659fa17053
commit
224201ae2f
3 changed files with 8 additions and 11 deletions
|
@ -69,7 +69,6 @@ defmodule Architex.Room do
|
|||
end
|
||||
|
||||
def get_messages(room, %Messages{from: from, to: to, dir: dir, limit: limit}) do
|
||||
# TODO: Quaternion seems to show events in the wrong order?
|
||||
# TODO: Check 'from' and 'to' formats.
|
||||
limit = limit || 10
|
||||
|
||||
|
@ -116,23 +115,19 @@ defmodule Architex.Room do
|
|||
|
||||
defp get_start([], _), do: nil
|
||||
|
||||
defp get_start([%Event{nid: first_nid} | _], "f") do
|
||||
Integer.to_string(first_nid)
|
||||
end
|
||||
defp get_start([%Event{nid: first_nid} | _], "f"), do: first_nid
|
||||
|
||||
defp get_start(events, "b") do
|
||||
%Event{nid: last_nid} = List.last(events)
|
||||
Integer.to_string(last_nid)
|
||||
last_nid
|
||||
end
|
||||
|
||||
defp get_end(events, limit, _) when length(events) < limit, do: nil
|
||||
|
||||
defp get_end([%Event{nid: first_nid} | _], _, "f") do
|
||||
Integer.to_string(first_nid)
|
||||
end
|
||||
defp get_end([%Event{nid: first_nid} | _], _, "f"), do: first_nid
|
||||
|
||||
defp get_end(events, _, "b") do
|
||||
%Event{nid: last_nid} = List.last(events)
|
||||
Integer.to_string(last_nid)
|
||||
last_nid
|
||||
end
|
||||
end
|
||||
|
|
|
@ -241,8 +241,8 @@ defmodule ArchitexWeb.Client.RoomController do
|
|||
{events, start, end_} = Room.get_messages(room, request)
|
||||
events = Enum.map(events, &Event.Formatters.for_client/1)
|
||||
data = %{chunk: events}
|
||||
data = if start, do: Map.put(data, :start, start), else: data
|
||||
data = if end_, do: Map.put(data, :end, end_), else: data
|
||||
data = if start, do: Map.put(data, :start, Integer.to_string(start)), else: data
|
||||
data = if end_, do: Map.put(data, :end, Integer.to_string(end_)), else: data
|
||||
|
||||
conn
|
||||
|> put_status(200)
|
||||
|
|
|
@ -17,5 +17,7 @@ defmodule ArchitexWeb.Client.Request.Messages do
|
|||
|> Architex.validate_not_nil([:from])
|
||||
|> validate_inclusion(:dir, ["b", "f"])
|
||||
|> validate_number(:limit, greater_than: 0)
|
||||
|> validate_format(:from, ~r/^[0-9]*$/)
|
||||
|> validate_format(:to, ~r/^[0-9]+$/)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue