|
|
@ -36,11 +36,14 @@ class XrdController < ApplicationController |
|
|
|
end |
|
|
|
|
|
|
|
def username_from_resource |
|
|
|
if resource_param.start_with?('acct:') || resource_param.include?('@') |
|
|
|
resource_param.split('@').first.gsub('acct:', '') |
|
|
|
if resource_param =~ /\Ahttps?:\/\// |
|
|
|
path_params = Rails.application.routes.recognize_path(resource_param) |
|
|
|
raise ActiveRecord::RecordNotFound unless path_params[:controller] == 'users' && path_params[:action] == 'show' |
|
|
|
path_params[:username] |
|
|
|
else |
|
|
|
url = Addressable::URI.parse(resource_param) |
|
|
|
url.path.gsub('/users/', '') |
|
|
|
username, domain = resource_param.gsub(/\Aacct:/, '').split('@') |
|
|
|
raise ActiveRecord::RecordNotFound unless TagManager.instance.local_domain?(domain) |
|
|
|
username |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|