Merge branch 'feld-varnish' into 'develop'
[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 def to_json(object) do
5 to_json(object, %{})
6 end
7
8 def to_json(object, options) do
9 object
10 |> to_map(options)
11 |> Jason.encode!()
12 end
13
14 def enum_to_list(enum, options) do
15 mapping = fn el -> to_map(el, options) end
16 Enum.map(enum, mapping)
17 end
18
19 def to_map(object) do
20 to_map(object, %{})
21 end
22
23 def enum_to_json(enum) do
24 enum_to_json(enum, %{})
25 end
26
27 def enum_to_json(enum, options) do
28 enum
29 |> enum_to_list(options)
30 |> Jason.encode!()
31 end
32 end
33 end
34 end