timestamps()
end
+ def avatar_url(user) do
+ case user.avatar do
+ %{"url" => [%{"href" => href} | _]} -> href
+ _ -> "https://placehold.it/48x48"
+ end
+ end
+
def ap_id(%User{nickname: nickname}) do
"#{Pleroma.Web.base_url}/users/#{nickname}"
end
--- /dev/null
+defmodule Pleroma.Web.OStatus.UserRepresenter do
+ alias Pleroma.User
+ def to_tuple(user, wrapper \\ :author) do
+ {
+ wrapper, [
+ { :id, user.ap_id },
+ { :"activity:object", "http://activitystrea.ms/schema/1.0/person" },
+ { :uri, user.ap_id },
+ { :name, user.nickname },
+ { :link, %{rel: "avatar", href: User.avatar_url(user)}}
+ ]
+ }
+ end
+end
alias Pleroma.User
def to_map(user, opts) do
- image = case user.avatar do
- %{"url" => [%{"href" => href} | _]} -> href
- _ -> "https://placehold.it/48x48"
- end
-
+ image = User.avatar_url(user)
following = if opts[:for] do
User.following?(opts[:for], user)
else
--- /dev/null
+defmodule Pleroma.Web.OStatus.UserRepresenterTest do
+ use Pleroma.DataCase
+ alias Pleroma.Web.OStatus.UserRepresenter
+
+ import Pleroma.Factory
+
+ test "returns a user with id, uri, name and link" do
+ user = build(:user)
+ tuple = UserRepresenter.to_tuple(user)
+ {:author, author} = tuple
+
+ [:id, :uri, :name, :link]
+ |> Enum.each(fn (tag) ->
+ assert Enum.find(author, fn(e) -> tag == elem(e, 0) end)
+ end)
+ end
+end