From 0e8f59c16fcb21301c736ecbc4424cb4c5388c42 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Feb 2016 19:42:08 +0100 Subject: Refactoring Grape API methods into normal controllers & other things --- app/controllers/accounts_controller.rb | 16 ++++++++++++++ app/controllers/api/salmon_controller.rb | 14 +++++++++++++ app/controllers/api/subscriptions_controller.rb | 28 +++++++++++++++++++++++++ app/controllers/atom_controller.rb | 18 ---------------- app/controllers/profile_controller.rb | 17 --------------- app/controllers/stream_entries_controller.rb | 23 ++++++++++++++++++++ app/controllers/xrd_controller.rb | 2 ++ 7 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 app/controllers/accounts_controller.rb create mode 100644 app/controllers/api/salmon_controller.rb create mode 100644 app/controllers/api/subscriptions_controller.rb delete mode 100644 app/controllers/atom_controller.rb delete mode 100644 app/controllers/profile_controller.rb create mode 100644 app/controllers/stream_entries_controller.rb (limited to 'app/controllers') diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb new file mode 100644 index 000000000..e96ef4a1c --- /dev/null +++ b/app/controllers/accounts_controller.rb @@ -0,0 +1,16 @@ +class AccountsController < ApplicationController + before_action :set_account + + def show + respond_to do |format| + format.html + format.atom + end + end + + private + + def set_account + @account = Account.find_by!(username: params[:username], domain: nil) + end +end diff --git a/app/controllers/api/salmon_controller.rb b/app/controllers/api/salmon_controller.rb new file mode 100644 index 000000000..99ec15bff --- /dev/null +++ b/app/controllers/api/salmon_controller.rb @@ -0,0 +1,14 @@ +class Api::SalmonController < ApplicationController + before_action :set_account + + def update + ProcessInteractionService.new.(request.body.read, @account) + render nothing: true, status: 201 + end + + private + + def set_account + @account = Account.find(params[:id]) + end +end diff --git a/app/controllers/api/subscriptions_controller.rb b/app/controllers/api/subscriptions_controller.rb new file mode 100644 index 000000000..56deae10c --- /dev/null +++ b/app/controllers/api/subscriptions_controller.rb @@ -0,0 +1,28 @@ +class Api::SubscriptionsController < ApplicationController + before_action :set_account + + def show + if @account.subscription(api_subscription_url(@account.id)).valid?(params['hub.topic'], params['hub.verify_token']) + render text: params['hub.challenge'], status: 200 + else + render nothing: true, status: 404 + end + end + + def update + body = request.body.read + + if @account.subscription(api_subscription_url(@account.id)).verify(body, env['HTTP_X_HUB_SIGNATURE']) + ProcessFeedService.new.(body, @account) + render nothing: true, status: 201 + else + render nothing: true, status: 202 + end + end + + private + + def set_account + @account = Account.find(params[:id]) + end +end diff --git a/app/controllers/atom_controller.rb b/app/controllers/atom_controller.rb deleted file mode 100644 index f9d8a4582..000000000 --- a/app/controllers/atom_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -class AtomController < ApplicationController - before_filter :set_format - - def user_stream - @account = Account.find_by!(id: params[:id], domain: nil) - end - - def entry - @entry = StreamEntry.find(params[:id]) - end - - private - - def set_format - request.format = 'xml' - response.headers['Content-Type'] = 'application/atom+xml' - end -end diff --git a/app/controllers/profile_controller.rb b/app/controllers/profile_controller.rb deleted file mode 100644 index 30bd1a6b6..000000000 --- a/app/controllers/profile_controller.rb +++ /dev/null @@ -1,17 +0,0 @@ -class ProfileController < ApplicationController - before_action :set_account - - def show - end - - def entry - @entry = @account.stream_entries.find(params[:id]) - @type = @entry.activity_type.downcase - end - - private - - def set_account - @account = Account.find_by!(username: params[:name], domain: nil) - end -end diff --git a/app/controllers/stream_entries_controller.rb b/app/controllers/stream_entries_controller.rb new file mode 100644 index 000000000..c5aebb9da --- /dev/null +++ b/app/controllers/stream_entries_controller.rb @@ -0,0 +1,23 @@ +class StreamEntriesController < ApplicationController + before_action :set_account + before_action :set_stream_entry + + def show + @type = @stream_entry.activity_type.downcase + + respond_to do |format| + format.html + format.atom + end + end + + private + + def set_account + @account = Account.find_by!(username: params[:account_username], domain: nil) + end + + def set_stream_entry + @stream_entry = @account.stream_entries.find(params[:id]) + end +end diff --git a/app/controllers/xrd_controller.rb b/app/controllers/xrd_controller.rb index 417d4f4fa..28e0a47b8 100644 --- a/app/controllers/xrd_controller.rb +++ b/app/controllers/xrd_controller.rb @@ -9,6 +9,8 @@ class XrdController < ApplicationController @account = Account.find_by!(username: username_from_resource, domain: nil) @canonical_account_uri = "acct:#{@account.username}@#{LOCAL_DOMAIN}" @magic_key = pem_to_magic_key(@account.keypair.public_key) + rescue ActiveRecord::RecordNotFound + render nothing: true, status: 404 end private -- cgit