From 94e213c6c11fb3476a6c151425052775427574e1 Mon Sep 17 00:00:00 2001 From: Evan Minto Date: Mon, 6 Feb 2017 01:19:05 -0800 Subject: [PATCH] Reuse existing controller and route --- app/controllers/accounts_controller.rb | 2 ++ .../api/activitypub/accounts_controller.rb | 18 ------------------ app/views/accounts/show.html.haml | 1 - .../{api/activitypub => }/accounts/show.rabl | 5 ++--- app/views/activitypub/base.rabl | 1 + app/views/activitypub/intransient.rabl | 3 +++ app/views/activitypub/types/person.rabl | 3 +++ config/initializers/mime_types.rb | 5 +++-- config/routes.rb | 4 ---- 9 files changed, 14 insertions(+), 28 deletions(-) delete mode 100644 app/controllers/api/activitypub/accounts_controller.rb rename app/views/{api/activitypub => }/accounts/show.rabl (68%) create mode 100644 app/views/activitypub/base.rabl create mode 100644 app/views/activitypub/intransient.rabl create mode 100644 app/views/activitypub/types/person.rabl diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 411a41cc..b837f006 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -18,6 +18,8 @@ class AccountsController < ApplicationController format.atom do @entries = @account.stream_entries.order('id desc').where(hidden: false).with_includes.paginate_by_max_id(20, params[:max_id], params[:since_id]) end + + format.activitystreams2 end end diff --git a/app/controllers/api/activitypub/accounts_controller.rb b/app/controllers/api/activitypub/accounts_controller.rb deleted file mode 100644 index 82936f06..00000000 --- a/app/controllers/api/activitypub/accounts_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Api::Activitypub::AccountsController < ApiController - before_action :set_account - - 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 diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index cd539890..c194ce33 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -4,7 +4,6 @@ - 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' }/ diff --git a/app/views/api/activitypub/accounts/show.rabl b/app/views/accounts/show.rabl similarity index 68% rename from app/views/api/activitypub/accounts/show.rabl rename to app/views/accounts/show.rabl index 806789d0..76aa4a80 100644 --- a/app/views/api/activitypub/accounts/show.rabl +++ b/app/views/accounts/show.rabl @@ -1,8 +1,7 @@ +extends 'activitypub/types/person.rabl' + 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 } diff --git a/app/views/activitypub/base.rabl b/app/views/activitypub/base.rabl new file mode 100644 index 00000000..c5e94997 --- /dev/null +++ b/app/views/activitypub/base.rabl @@ -0,0 +1 @@ +node(:'@context') { 'https://www.w3.org/ns/activitystreams' } diff --git a/app/views/activitypub/intransient.rabl b/app/views/activitypub/intransient.rabl new file mode 100644 index 00000000..21261f56 --- /dev/null +++ b/app/views/activitypub/intransient.rabl @@ -0,0 +1,3 @@ +extends 'activitypub/base.rabl' + +node(:id) { request.original_url } diff --git a/app/views/activitypub/types/person.rabl b/app/views/activitypub/types/person.rabl new file mode 100644 index 00000000..17c53bb7 --- /dev/null +++ b/app/views/activitypub/types/person.rabl @@ -0,0 +1,3 @@ +extends 'activitypub/intransient.rabl' + +node(:type) { 'Person' } \ No newline at end of file diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 5a16a14e..b1b73c84 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -1,4 +1,5 @@ # Be sure to restart your server when you modify this file. -Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest application/jrd+json ) -Mime::Type.register "text/xml", :xml, %w( application/xml application/atom+xml application/xrd+xml ) +Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest application/jrd+json ) +Mime::Type.register "text/xml", :xml, %w( application/xml application/atom+xml application/xrd+xml ) +Mime::Type.register "application/activity+json", :activitystreams2 diff --git a/config/routes.rb b/config/routes.rb index 4d0138b8..699f5683 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -153,10 +153,6 @@ Rails.application.routes.draw do end end - namespace :activitypub do - resources :accounts, only: [:show] - end - namespace :web do resource :settings, only: [:update] end