fedi/src/Fedi/Routes/User.hs
2024-11-04 17:43:42 +02:00

36 lines
894 B
Haskell

module Fedi.Routes.User where
import Data.Aeson qualified as A
import Fedi.Helpers
import Fedi.UserDetails
import Fedi.Webfinger
import Fedi.Routes.Helpers
import Web.Twain qualified as Twain
import Web.Twain.Types qualified as Twain
-- * User
matchUser :: UserDetails -> Twain.PathPattern
matchUser details = fromString ("/" <> details.username)
handleUser :: UserDetails -> Twain.ResponderM a
handleUser details = do
let
content = makeActor details
Twain.send $ jsonLD (A.encode content)
-- * Webfinger
matchWebfinger :: Twain.PathPattern
matchWebfinger = "/.well-known/webfinger"
handleWebfinger :: UserDetails -> Twain.ResponderM b
handleWebfinger details = do
resource <- Twain.param "resource"
let
webfinger = makeWebfinger details
if resource == ppSubject webfinger.subject
then do
Twain.send $ jsonLD (A.encode webfinger)
else do
Twain.next