about summary refs log tree commit diff
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/accounts_controller.rb16
-rw-r--r--app/controllers/api/salmon_controller.rb14
-rw-r--r--app/controllers/api/subscriptions_controller.rb28
-rw-r--r--app/controllers/atom_controller.rb18
-rw-r--r--app/controllers/profile_controller.rb17
-rw-r--r--app/controllers/stream_entries_controller.rb23
-rw-r--r--app/controllers/xrd_controller.rb2
7 files changed, 83 insertions, 35 deletions
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