diff options
author | Eugen <eugen@zeonfederated.com> | 2017-02-07 02:08:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-07 02:08:40 +0100 |
commit | 9d5fb49cd80ee31f83bf5364338bd829e3eae1d6 (patch) | |
tree | bb49d530bdb47d3576987d48a69698779b6504da | |
parent | 8a081ce588594154f93702ac2983cb7c0fca015a (diff) | |
parent | 28cbb6dc2176cb9ba57841c6dc52b9dbfaf074c8 (diff) |
Merge pull request #603 from evanminto/activitypub-account
Expose ActivityStreams 2.0 representation of accounts
-rw-r--r-- | app/controllers/accounts_controller.rb | 2 | ||||
-rw-r--r-- | app/views/accounts/show.activitystreams2.rabl | 8 | ||||
-rw-r--r-- | app/views/activitypub/base.activitystreams2.rabl | 1 | ||||
-rw-r--r-- | app/views/activitypub/intransient.activitystreams2.rabl | 3 | ||||
-rw-r--r-- | app/views/activitypub/types/person.activitystreams2.rabl | 3 | ||||
-rw-r--r-- | config/initializers/mime_types.rb | 5 | ||||
-rw-r--r-- | spec/controllers/accounts_controller_spec.rb | 10 |
7 files changed, 30 insertions, 2 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/views/accounts/show.activitystreams2.rabl b/app/views/accounts/show.activitystreams2.rabl new file mode 100644 index 000000000..dabae3f29 --- /dev/null +++ b/app/views/accounts/show.activitystreams2.rabl @@ -0,0 +1,8 @@ +extends 'activitypub/types/person.activitystreams2.rabl' + +object @account + +attributes display_name: :name, username: :preferredUsername, note: :summary + +node(:icon) { |account| full_asset_url(account.avatar.url(:original)) } +node(:image) { |account| full_asset_url(account.header.url(:original)) } diff --git a/app/views/activitypub/base.activitystreams2.rabl b/app/views/activitypub/base.activitystreams2.rabl new file mode 100644 index 000000000..c5e94997a --- /dev/null +++ b/app/views/activitypub/base.activitystreams2.rabl @@ -0,0 +1 @@ +node(:'@context') { 'https://www.w3.org/ns/activitystreams' } diff --git a/app/views/activitypub/intransient.activitystreams2.rabl b/app/views/activitypub/intransient.activitystreams2.rabl new file mode 100644 index 000000000..968e451c2 --- /dev/null +++ b/app/views/activitypub/intransient.activitystreams2.rabl @@ -0,0 +1,3 @@ +extends 'activitypub/base.activitystreams2.rabl' + +node(:id) { request.original_url } diff --git a/app/views/activitypub/types/person.activitystreams2.rabl b/app/views/activitypub/types/person.activitystreams2.rabl new file mode 100644 index 000000000..487a60791 --- /dev/null +++ b/app/views/activitypub/types/person.activitystreams2.rabl @@ -0,0 +1,3 @@ +extends 'activitypub/intransient.activitystreams2.rabl' + +node(:type) { 'Person' } 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/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 34f17a943..d2c93c707 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -24,6 +24,16 @@ RSpec.describe AccountsController, type: :controller do end end + context 'activitystreams2' do + before do + get :show, params: { username: alice.username }, format: 'activitystreams2' + end + + it 'returns http success with Activity Streams 2.0' do + expect(response).to have_http_status(:success) + end + end + context 'html' do before do get :show, params: { username: alice.username } |