module Fedi.Routes.User where import Data.Aeson qualified as A import Fedi.Helpers import Fedi.UserDetails import Fedi.Webfinger import Fedi.Types.Helpers 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