From 157f03f8bdbca1b34895099b38e5f2a1aeb1bd23 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 13 Oct 2016 13:41:06 +0200 Subject: [PATCH] No-op for Salmons without body, fail fast if Webfinger does not contain all required resource links (profile page, salmon, atom feed, magic key) --- app/controllers/api/salmon_controller.rb | 10 ++++++++-- app/services/follow_remote_account_service.rb | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/salmon_controller.rb b/app/controllers/api/salmon_controller.rb index 8bd653d7d..c0ba32ff2 100644 --- a/app/controllers/api/salmon_controller.rb +++ b/app/controllers/api/salmon_controller.rb @@ -3,8 +3,14 @@ class Api::SalmonController < ApiController respond_to :txt def update - ProcessInteractionService.new.call(request.body.read, @account) - head 201 + body = request.body.read + + if body.nil? + head 200 + else + ProcessInteractionService.new.call(body, @account) + head 201 + end end private diff --git a/app/services/follow_remote_account_service.rb b/app/services/follow_remote_account_service.rb index 43d3698e9..0a95badb2 100644 --- a/app/services/follow_remote_account_service.rb +++ b/app/services/follow_remote_account_service.rb @@ -23,6 +23,8 @@ class FollowRemoteAccountService < BaseService data = Goldfinger.finger("acct:#{uri}") + raise Goldfinger::Error, 'Missing resource links' if data.link('http://schemas.google.com/g/2010#updates-from').nil? || data.link('salmon').nil? || data.link('http://webfinger.net/rel/profile-page').nil? || data.link('magic-public-key').nil? + account.remote_url = data.link('http://schemas.google.com/g/2010#updates-from').href account.salmon_url = data.link('salmon').href account.url = data.link('http://webfinger.net/rel/profile-page').href