- defp get_user(user, params) do
- case params do
- %{ "user_id" => user_id } ->
- Repo.get(User, user_id)
- %{ "screen_name" => nickname } ->
- Repo.get_by!(User, nickname: nickname)
- _ ->
- user
+ # DEPRECATED mostly, context objects are now created at insertion time.
+ def context_to_conversation_id(context) do
+ with %Object{id: id} <- Object.get_cached_by_ap_id(context) do
+ id
+ else
+ _e ->
+ changeset = Object.context_mapping(context)
+
+ case Repo.insert(changeset) do
+ {:ok, %{id: id}} ->
+ id
+
+ # This should be solved by an upsert, but it seems ecto
+ # has problems accessing the constraint inside the jsonb.
+ {:error, _} ->
+ Object.get_cached_by_ap_id(context).id
+ end
+ end
+ end
+
+ def conversation_id_to_context(id) do
+ with %Object{data: %{"id" => context}} <- Repo.get(Object, id) do
+ context
+ else
+ _e ->
+ {:error, "No such conversation"}
+ end
+ end
+
+ def get_external_profile(for_user, uri) do
+ with %User{} = user <- User.get_or_fetch(uri) do
+ {:ok, UserView.render("show.json", %{user: user, for: for_user})}
+ else
+ _e ->
+ {:error, "Couldn't find user"}