X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Factivity_pub.ex;h=d593460422121c3f42b0ced632157c476799e3c1;hb=c443aec83d31d838c50fb888d585f5266091b09b;hp=554d3a00800b151349743b617cc9eaf7e34c2170;hpb=94db9ac4dba6ba02fcae1b9055b532818cf787c7;p=akkoma diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 554d3a008..d59346042 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -260,25 +260,45 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Repo.insert(%Object{data: data}) end - def make_user_from_ap_id(ap_id) do + def fetch_and_prepare_user_from_ap_id(ap_id) do with {:ok, %{status_code: 200, body: body}} <- @httpoison.get(ap_id, ["Accept": "application/activity+json"]), {:ok, data} <- Poison.decode(body) do + avatar = %{ + "type" => "Image", + "url" => [%{"href" => data["icon"]["url"]}] + } + + banner = %{ + "type" => "Image", + "url" => [%{"href" => data["image"]["url"]}] + } + user_data = %{ ap_id: data["id"], info: %{ "ap_enabled" => true, - "source_data" => data + "source_data" => data, + "banner" => banner }, + avatar: avatar, nickname: "#{data["preferredUsername"]}@#{URI.parse(ap_id).host}", - name: data["name"] + name: data["name"], + follower_address: data["followers"], } - if user = User.get_by_ap_id(ap_id) do - User.info_changeset(user, user_data) - |> Repo.update + {:ok, user_data} + end + end + + def make_user_from_ap_id(ap_id) do + if user = User.get_by_ap_id(ap_id) do + Transmogrifier.upgrade_user_from_ap_id(ap_id) + else + with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id) do + User.insert_or_update_user(data) else - User.insert_or_update_user(user_data) + e -> e end end end