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

master
Evan Minto 8 years ago
parent 7b7a356aed
commit e2fbf8bc74
  1. 20
      app/controllers/api/activitypub/accounts_controller.rb
  2. 1
      app/views/accounts/show.html.haml
  3. 10
      app/views/api/activitypub/accounts/show.rabl
  4. 6
      config/routes.rb

@ -0,0 +1,20 @@
# 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' }/

@ -0,0 +1,10 @@
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

Loading…
Cancel
Save