require 'uri' class Webfinger::HostMetaPresenter def initialize(request) @request = request end def to_json(options = {}) { subject: subject, links: links }.to_json(options) end def subject url = URI.parse(@request.url) url.path = '' url.to_s end def links { lrdd: { type: 'application/xrd+xml', template: webfinger_template } } end protected def webfinger_template(path = 'webfinger', query_param='q') "#{subject}/#{path}?#{query_param}={uri}" end end