--- /dev/null
+# frozen_string_literal: true
+
+class Api::Activitypub::AccountsController < ApiController
+ before_action -> { doorkeeper_authorize! :read }, except: [:show]
+ before_action :require_user!, except: [:show]
+ before_action :set_account, except: [:verify_credentials, :suggestions, :search]
+
+ respond_to :'application/activity+json'
+ respond_to :'application/ld+json; profile="https://www.w3.org/ns/activitystreams#"'
+
+ def show
+ render content_type: :'application/ld+json; profile="https://www.w3.org/ns/activitystreams#"'
+ end
+
+ private
+
+ def set_account
+ @account = Account.find(params[:id])
+ end
+end
- content_for :header_tags do
%link{ rel: 'salmon', href: api_salmon_url(@account.id) }/
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/
+ %link{ rel: 'alternate', type: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams#"', href: "http://mastodon.dev/api/v1/activitypub/accounts/#{@account.username}" }/
%meta{ property: 'og:site_name', content: 'Mastodon' }/
%meta{ property: 'og:type', content: 'profile' }/
--- /dev/null
+object @account
+
+node(:'@context') { 'https://www.w3.org/ns/activitystreams' }
+node(:type) { 'Person' }
+node(:id) { request.original_url }
+node(:url) { |account| TagManager.instance.url_for(account) }
+node(:name) { |account| account.display_name }
+node(:preferredUsername) { |account| account.username }
+node(:summary) { |account| account.note }
+node(:icon) { |account| full_asset_url(account.avatar.url(:original)) }
end
end
+ namespace :activitypub do
+ resources :accounts do
+ get '/:id', to: 'accounts#show'
+ end
+ end
+
namespace :web do
resource :settings, only: [:update]
end