From 00a39475eb438c82329996029c26a93c6d31af9e Mon Sep 17 00:00:00 2001 From: fr33domlover Date: Tue, 6 Sep 2022 17:41:09 +0000 Subject: [PATCH] S2S: Prepare inbox handler for Group as well --- src/Vervis/Handler/Group.hs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Vervis/Handler/Group.hs b/src/Vervis/Handler/Group.hs index 71dd001..2dc473f 100644 --- a/src/Vervis/Handler/Group.hs +++ b/src/Vervis/Handler/Group.hs @@ -43,33 +43,29 @@ module Vervis.Handler.Group ) where -import Control.Monad.IO.Class (liftIO) -import Data.Maybe (fromMaybe) -import Data.Time.Clock (getCurrentTime) -import Database.Esqueleto hiding ((==.), (!=.), delete) +import Control.Monad.Trans.Except +import Data.Text (Text) import Database.Persist -import Text.Blaze.Html (Html) -import Yesod.Auth (requireAuthId) -import Yesod.Core (defaultLayout, setMessage) +import Data.ByteString (ByteString) import Yesod.Core.Content (TypedContent) import Yesod.Core.Handler -import Yesod.Form.Functions (runFormPost) -import Yesod.Form.Types (FormResult (..)) import Yesod.Persist.Core import qualified Database.Esqueleto as E +import Network.FedURI import Yesod.ActivityPub import Yesod.FedURI import Yesod.Hashids import qualified Web.ActivityPub as AP +import Vervis.Federation.Auth +import Vervis.FedURI import Vervis.Foundation import Vervis.Model import Vervis.Model.Group -import Vervis.Settings (widgetFile) -import Vervis.Time (showDate) +import Vervis.Recipient import Vervis.Web.Actor getGroupR :: KeyHashid Group -> Handler TypedContent @@ -110,8 +106,19 @@ getGroupR groupHash = do getGroupInboxR :: KeyHashid Group -> Handler TypedContent getGroupInboxR = getInbox GroupInboxR groupActor -postGroupInboxR :: KeyHashid Group -> Handler TypedContent -postGroupInboxR _ = error "Temporarily disabled" +postGroupInboxR :: KeyHashid Group -> Handler () +postGroupInboxR recipGroupHash = + postInbox $ handleRobotInbox (LocalActorGroup recipGroupHash) handle + where + handle + :: RemoteAuthor + -> Maybe (RecipientRoutes, ByteString) + -> LocalURI + -> AP.SpecificActivity URIMode + -> ExceptT Text Handler (Text, Maybe (ExceptT Text Worker Text)) + handle _author _mfwd _luActivity specific = + case specific of + _ -> return ("Unsupported activity type for groups", Nothing) getGroupOutboxR :: KeyHashid Group -> Handler TypedContent getGroupOutboxR = getOutbox GroupOutboxR groupActor