Fix NaN statuses per day.
[akkoma] / lib / pleroma / web / twitter_api / representers / base_representer.ex
1 defmodule Pleroma.Web.TwitterAPI.Representers.BaseRepresenter do
2 defmacro __using__(_opts) do
3 quote do
4 alias Calendar.Strftime
5 def to_json(object) do to_json(object, %{}) end
6 def to_json(object, options) do
7 object
8 |> to_map(options)
9 |> Poison.encode!
10 end
11
12 def enum_to_list(enum, options) do
13 mapping = fn (el) -> to_map(el, options) end
14 Enum.map(enum, mapping)
15 end
16
17 def to_map(object) do
18 to_map(object, %{})
19 end
20
21 def enum_to_json(enum) do enum_to_json(enum, %{}) end
22 def enum_to_json(enum, options) do
23 enum
24 |> enum_to_list(options)
25 |> Poison.encode!
26 end
27
28 def format_asctime(date) do
29 Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y")
30 end
31
32 def date_to_asctime(date) do
33 with {:ok, date, _offset} <- date |> DateTime.from_iso8601 do
34 format_asctime(date)
35 else _e ->
36 ""
37 end
38 end
39 end
40 end
41 end