about summary refs log tree commit diff
path: root/app/serializers/webfinger_serializer.rb
diff options
context:
space:
mode:
authorDavid Yip <yipdw@member.fsf.org>2017-12-06 15:40:59 -0600
committerDavid Yip <yipdw@member.fsf.org>2017-12-06 15:40:59 -0600
commitf1cbea77a4a52929244198dcbde26d63d837489a (patch)
tree82645dbc9eec65f870ce7a211355deb6bdc29f29 /app/serializers/webfinger_serializer.rb
parent21e28a5caa5e92165322c4127c89a6f88e68198a (diff)
parent8ca91cef45417947607079118b1af07c9774ae58 (diff)
Merge remote-tracking branch 'personal/merge/tootsuite/master' into gs-master
Diffstat (limited to 'app/serializers/webfinger_serializer.rb')
-rw-r--r--app/serializers/webfinger_serializer.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/serializers/webfinger_serializer.rb b/app/serializers/webfinger_serializer.rb
new file mode 100644
index 000000000..f80d12c02
--- /dev/null
+++ b/app/serializers/webfinger_serializer.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class WebfingerSerializer < ActiveModel::Serializer
+  include RoutingHelper
+
+  attributes :subject, :aliases, :links
+
+  def subject
+    object.to_webfinger_s
+  end
+
+  def aliases
+    [short_account_url(object), account_url(object)]
+  end
+
+  def links
+    [
+      { rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: short_account_url(object) },
+      { rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(object, format: 'atom') },
+      { rel: 'self', type: 'application/activity+json', href: account_url(object) },
+      { rel: 'salmon', href: api_salmon_url(object.id) },
+      { rel: 'magic-public-key', href: "data:application/magic-public-key,#{object.magic_key}" },
+      { rel: 'http://ostatus.org/schema/1.0/subscribe', template: "#{authorize_follow_url}?acct={uri}" },
+    ]
+  end
+end