From de48efcf2a6b5fb096fd209b1efea482f743c19c Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 22 Jan 2013 12:02:18 +0100 Subject: some basic webfinger routes, controller, presenters, views --- users/lib/webfinger/user_presenter.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 users/lib/webfinger/user_presenter.rb (limited to 'users/lib/webfinger/user_presenter.rb') diff --git a/users/lib/webfinger/user_presenter.rb b/users/lib/webfinger/user_presenter.rb new file mode 100644 index 0000000..bbfc908 --- /dev/null +++ b/users/lib/webfinger/user_presenter.rb @@ -0,0 +1,16 @@ +class Webfinger::UserPresenter + attr_accessor :subject + + def initialize(subject, request) + @subject = subject + @request = request + end + + def email_identifier + "#{@subject.username}@#{@request.host}" + end + + def key + Base64.encode64(@subject.public_key.to_s) + end +end -- cgit v1.2.3 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/lib/webfinger/user_presenter.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'users/lib/webfinger/user_presenter.rb') 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 From b530279a144ad5fb35070952898c8e6ae3ba68ea Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 09:39:50 +0100 Subject: not inluding link to key if there is none --- users/lib/webfinger/user_presenter.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'users/lib/webfinger/user_presenter.rb') diff --git a/users/lib/webfinger/user_presenter.rb b/users/lib/webfinger/user_presenter.rb index 8184c52..8288bff 100644 --- a/users/lib/webfinger/user_presenter.rb +++ b/users/lib/webfinger/user_presenter.rb @@ -12,16 +12,22 @@ class Webfinger::UserPresenter end def key - Base64.encode64(@subject.public_key.to_s) + if @subject.public_key.present? + Base64.encode64(@subject.public_key.to_s) + end + end + + def links + links = {} + links[:public_key] = { type: 'PGP', href: key } if key + return links end def to_json(options) { subject: "acct:#{email_identifier}", aliases: [ user_url(@subject, :host => @request.host) ], - links: { - public_key: { type: 'PGP', href: key } - } + links: links }.to_json(options) end -- cgit v1.2.3 From 30f406de954bac1da5fef7cdd753c0af16f11051 Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 23 Jan 2013 13:13:41 +0100 Subject: added unit tests for user presenter changed the way the presenter works. Will need functional testing --- users/lib/webfinger/user_presenter.rb | 36 ++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'users/lib/webfinger/user_presenter.rb') diff --git a/users/lib/webfinger/user_presenter.rb b/users/lib/webfinger/user_presenter.rb index 8288bff..41153a8 100644 --- a/users/lib/webfinger/user_presenter.rb +++ b/users/lib/webfinger/user_presenter.rb @@ -1,20 +1,26 @@ class Webfinger::UserPresenter include Rails.application.routes.url_helpers - attr_accessor :subject + attr_accessor :user - def initialize(subject, request) - @subject = subject + def initialize(user, request) + @user = user @request = request end - def email_identifier - "#{@subject.username}@#{@request.host}" + def to_json(options = {}) + { + subject: subject, + aliases: aliases, + links: links + }.to_json(options) end - def key - if @subject.public_key.present? - Base64.encode64(@subject.public_key.to_s) - end + def subject + "acct:#{@user.email_address}" + end + + def aliases + [ user_url(@user, :host => @request.host) ] end def links @@ -23,12 +29,12 @@ class Webfinger::UserPresenter return links end - def to_json(options) - { - subject: "acct:#{email_identifier}", - aliases: [ user_url(@subject, :host => @request.host) ], - links: links - }.to_json(options) + protected + + def key + if @user.public_key.present? + Base64.encode64(@user.public_key.to_s) + end end end -- cgit v1.2.3 From 9d053b6c9b61c68bf11f95bcb37631a518f1fba4 Mon Sep 17 00:00:00 2001 From: jessib Date: Thu, 24 Jan 2013 11:38:11 -0800 Subject: Removing aliases from webfinger as the link wouldn't work anyway, and don't want to leak ID information. --- users/lib/webfinger/user_presenter.rb | 5 ----- 1 file changed, 5 deletions(-) (limited to 'users/lib/webfinger/user_presenter.rb') diff --git a/users/lib/webfinger/user_presenter.rb b/users/lib/webfinger/user_presenter.rb index 41153a8..329f477 100644 --- a/users/lib/webfinger/user_presenter.rb +++ b/users/lib/webfinger/user_presenter.rb @@ -10,7 +10,6 @@ class Webfinger::UserPresenter def to_json(options = {}) { subject: subject, - aliases: aliases, links: links }.to_json(options) end @@ -19,10 +18,6 @@ class Webfinger::UserPresenter "acct:#{@user.email_address}" end - def aliases - [ user_url(@user, :host => @request.host) ] - end - def links links = {} links[:public_key] = { type: 'PGP', href: key } if key -- cgit v1.2.3