Skip to content
Snippets Groups Projects
Commit e2fbf8bc authored by Evan Minto's avatar Evan Minto
Browse files

Add an account endpoint for ActivityPub and link to it on HTML profile pages

parent 7b7a356a
No related branches found
No related tags found
No related merge requests found
# 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
......@@ -4,6 +4,7 @@
- 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' }/
......
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)) }
......@@ -153,6 +153,12 @@ Rails.application.routes.draw do
end
end
namespace :activitypub do
resources :accounts do
get '/:id', to: 'accounts#show'
end
end
namespace :web do
resource :settings, only: [:update]
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment