|
|
@@ -7,7 +7,7 @@ defmodule Pleroma.Web.WebFinger do |
|
|
|
|
|
|
|
alias Pleroma.User |
|
|
|
alias Pleroma.Web |
|
|
|
alias Pleroma.Web.OStatus |
|
|
|
alias Pleroma.Web.Federator.Publisher |
|
|
|
alias Pleroma.Web.Salmon |
|
|
|
alias Pleroma.Web.XML |
|
|
|
alias Pleroma.XmlBuilder |
|
|
@@ -50,70 +50,40 @@ defmodule Pleroma.Web.WebFinger do |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
defp gather_links(%User{} = user) do |
|
|
|
[ |
|
|
|
%{ |
|
|
|
"rel" => "http://webfinger.net/rel/profile-page", |
|
|
|
"type" => "text/html", |
|
|
|
"href" => user.ap_id |
|
|
|
} |
|
|
|
] ++ Publisher.gather_webfinger_links(user) |
|
|
|
end |
|
|
|
|
|
|
|
def represent_user(user, "JSON") do |
|
|
|
{:ok, user} = ensure_keys_present(user) |
|
|
|
{:ok, _private, public} = Salmon.keys_from_pem(user.info.keys) |
|
|
|
magic_key = Salmon.encode_key(public) |
|
|
|
|
|
|
|
%{ |
|
|
|
"subject" => "acct:#{user.nickname}@#{Pleroma.Web.Endpoint.host()}", |
|
|
|
"aliases" => [user.ap_id], |
|
|
|
"links" => [ |
|
|
|
%{ |
|
|
|
"rel" => "http://schemas.google.com/g/2010#updates-from", |
|
|
|
"type" => "application/atom+xml", |
|
|
|
"href" => OStatus.feed_path(user) |
|
|
|
}, |
|
|
|
%{ |
|
|
|
"rel" => "http://webfinger.net/rel/profile-page", |
|
|
|
"type" => "text/html", |
|
|
|
"href" => user.ap_id |
|
|
|
}, |
|
|
|
%{"rel" => "salmon", "href" => OStatus.salmon_path(user)}, |
|
|
|
%{ |
|
|
|
"rel" => "magic-public-key", |
|
|
|
"href" => "data:application/magic-public-key,#{magic_key}" |
|
|
|
}, |
|
|
|
%{"rel" => "self", "type" => "application/activity+json", "href" => user.ap_id}, |
|
|
|
%{ |
|
|
|
"rel" => "self", |
|
|
|
"type" => "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"", |
|
|
|
"href" => user.ap_id |
|
|
|
}, |
|
|
|
%{ |
|
|
|
"rel" => "http://ostatus.org/schema/1.0/subscribe", |
|
|
|
"template" => OStatus.remote_follow_path() |
|
|
|
} |
|
|
|
] |
|
|
|
"links" => gather_links(user) |
|
|
|
} |
|
|
|
end |
|
|
|
|
|
|
|
def represent_user(user, "XML") do |
|
|
|
{:ok, user} = ensure_keys_present(user) |
|
|
|
{:ok, _private, public} = Salmon.keys_from_pem(user.info.keys) |
|
|
|
magic_key = Salmon.encode_key(public) |
|
|
|
|
|
|
|
links = |
|
|
|
gather_links(user) |
|
|
|
|> Enum.map(fn link -> {:Link, link} end) |
|
|
|
|
|
|
|
{ |
|
|
|
:XRD, |
|
|
|
%{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"}, |
|
|
|
[ |
|
|
|
{:Subject, "acct:#{user.nickname}@#{Pleroma.Web.Endpoint.host()}"}, |
|
|
|
{:Alias, user.ap_id}, |
|
|
|
{:Link, |
|
|
|
%{ |
|
|
|
rel: "http://schemas.google.com/g/2010#updates-from", |
|
|
|
type: "application/atom+xml", |
|
|
|
href: OStatus.feed_path(user) |
|
|
|
}}, |
|
|
|
{:Link, |
|
|
|
%{rel: "http://webfinger.net/rel/profile-page", type: "text/html", href: user.ap_id}}, |
|
|
|
{:Link, %{rel: "salmon", href: OStatus.salmon_path(user)}}, |
|
|
|
{:Link, |
|
|
|
%{rel: "magic-public-key", href: "data:application/magic-public-key,#{magic_key}"}}, |
|
|
|
{:Link, %{rel: "self", type: "application/activity+json", href: user.ap_id}}, |
|
|
|
{:Link, |
|
|
|
%{rel: "http://ostatus.org/schema/1.0/subscribe", template: OStatus.remote_follow_path()}} |
|
|
|
] |
|
|
|
{:Alias, user.ap_id} |
|
|
|
] ++ links |
|
|
|
} |
|
|
|
|> XmlBuilder.to_doc() |
|
|
|
end |
|
|
|