about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEvan Minto <evan.minto@gmail.com>2017-02-06 01:19:05 -0800
committerEvan Minto <evan.minto@gmail.com>2017-02-06 01:19:26 -0800
commit94e213c6c11fb3476a6c151425052775427574e1 (patch)
tree93d3ef2c7c6d96801693e9268f24c481a2bb6af5
parent8bd8ea7c0406a8eeb145471475b105366e195e6a (diff)
Reuse existing controller and route
-rw-r--r--app/controllers/accounts_controller.rb2
-rw-r--r--app/controllers/api/activitypub/accounts_controller.rb18
-rw-r--r--app/views/accounts/show.html.haml1
-rw-r--r--app/views/accounts/show.rabl (renamed from app/views/api/activitypub/accounts/show.rabl)5
-rw-r--r--app/views/activitypub/base.rabl1
-rw-r--r--app/views/activitypub/intransient.rabl3
-rw-r--r--app/views/activitypub/types/person.rabl3
-rw-r--r--config/initializers/mime_types.rb5
-rw-r--r--config/routes.rb4
9 files changed, 14 insertions, 28 deletions
diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb
index 411a41ccc..b837f006e 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 82936f062..000000000
--- 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 cd5398908..c194ce33d 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
index 806789d00..76aa4a809 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 000000000..c5e94997a
--- /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 000000000..21261f56d
--- /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 000000000..17c53bb7b
--- /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 5a16a14e8..b1b73c846 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 4d0138b82..699f56833 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