From 31d18779fe1af0c55b72be7bc554302322025ee5 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 15:46:47 +0100 Subject: adding json jrd responses to webfinger --- users/app/controllers/webfinger_controller.rb | 3 +++ users/app/views/webfinger/search.erb | 6 ------ users/app/views/webfinger/search.xml.erb | 6 ++++++ users/lib/webfinger/user_presenter.rb | 12 ++++++++++++ 4 files changed, 21 insertions(+), 6 deletions(-) delete mode 100644 users/app/views/webfinger/search.erb create mode 100644 users/app/views/webfinger/search.xml.erb diff --git a/users/app/controllers/webfinger_controller.rb b/users/app/controllers/webfinger_controller.rb index ac05934..d3a4ad3 100644 --- a/users/app/controllers/webfinger_controller.rb +++ b/users/app/controllers/webfinger_controller.rb @@ -1,15 +1,18 @@ class WebfingerController < ApplicationController + respond_to :xml, :json layout false def host_meta @host_meta = Webfinger::HostMetaPresenter.new(request) + respond_with @host_meta end def search username = params[:q].split('@')[0].to_s.downcase user = User.find_by_login(username) || not_found @subject = Webfinger::UserPresenter.new(user, request) + respond_with @subject end end diff --git a/users/app/views/webfinger/search.erb b/users/app/views/webfinger/search.erb deleted file mode 100644 index 0bcb7e5..0000000 --- a/users/app/views/webfinger/search.erb +++ /dev/null @@ -1,6 +0,0 @@ - - - acct:<%= @subject.email_identifier %> - "<%= user_url(@subject.subject) %>" - - diff --git a/users/app/views/webfinger/search.xml.erb b/users/app/views/webfinger/search.xml.erb new file mode 100644 index 0000000..0bcb7e5 --- /dev/null +++ b/users/app/views/webfinger/search.xml.erb @@ -0,0 +1,6 @@ + + + acct:<%= @subject.email_identifier %> + "<%= user_url(@subject.subject) %>" + + diff --git a/users/lib/webfinger/user_presenter.rb b/users/lib/webfinger/user_presenter.rb index bbfc908..8184c52 100644 --- a/users/lib/webfinger/user_presenter.rb +++ b/users/lib/webfinger/user_presenter.rb @@ -1,4 +1,5 @@ class Webfinger::UserPresenter + include Rails.application.routes.url_helpers attr_accessor :subject def initialize(subject, request) @@ -13,4 +14,15 @@ class Webfinger::UserPresenter def key Base64.encode64(@subject.public_key.to_s) end + + def to_json(options) + { + subject: "acct:#{email_identifier}", + aliases: [ user_url(@subject, :host => @request.host) ], + links: { + public_key: { type: 'PGP', href: key } + } + }.to_json(options) + end + end -- cgit v1.2.3