logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

base_representer.ex (874B)


      1 # Pleroma: A lightweight social networking server
      2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
      3 # SPDX-License-Identifier: AGPL-3.0-only
      4 
      5 defmodule Pleroma.Web.TwitterAPI.Representers.BaseRepresenter do
      6   defmacro __using__(_opts) do
      7     quote do
      8       def to_json(object) do
      9         to_json(object, %{})
     10       end
     11 
     12       def to_json(object, options) do
     13         object
     14         |> to_map(options)
     15         |> Jason.encode!()
     16       end
     17 
     18       def enum_to_list(enum, options) do
     19         mapping = fn el -> to_map(el, options) end
     20         Enum.map(enum, mapping)
     21       end
     22 
     23       def to_map(object) do
     24         to_map(object, %{})
     25       end
     26 
     27       def enum_to_json(enum) do
     28         enum_to_json(enum, %{})
     29       end
     30 
     31       def enum_to_json(enum, options) do
     32         enum
     33         |> enum_to_list(options)
     34         |> Jason.encode!()
     35       end
     36     end
     37   end
     38 end