{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} module Endpoints.WellKnownEndpoint (WellKnownAPI, wellKnownServer) where import Servant import Data.Text (pack) import Model.WellKnown ---------------------------------------------------------------------------------------------------- type WellKnownAPI = GetWellKnownClient :<|> GetWellKnownSupport wellKnownServer :: Server WellKnownAPI wellKnownServer = handleWellKnownClientGet :<|> handleWellKnownSupportGet --- GET /.well-known/matrix/client ----------------------------------------------------------------- type GetWellKnownClient = ".well-known" :> "matrix" :> "client" :> Get '[JSON] WellKnownClientResponse handleWellKnownClientGet :: Handler WellKnownClientResponse handleWellKnownClientGet = return $ WellKnownClientResponse { homeserver = BaseUrlHolder (pack "http://localhost:8080") , identity_server = BaseUrlHolder (pack "https://vector.im") } --- GET /.well-known/matrix/support ---------------------------------------------------------------- type GetWellKnownSupport = ".well-known" :> "matrix" :> "support" :> Get '[JSON] WellKnownSupportResponse handleWellKnownSupportGet :: Handler WellKnownSupportResponse handleWellKnownSupportGet = return $ WellKnownSupportResponse { contacts = [Contact (pack "email") (pack "mxid") (pack "m.role.admin")] , support_page = pack "http://localhost:8080/support.html" }