{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedStrings #-} module Endpoints.WellKnownEndpoint (WellKnownAPI, wellKnownServer) where import Servant 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 "http://localhost:8080" , identity_server = BaseUrlHolder "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 "email" "mxid" "m.role.admin"] , support_page = "http://localhost:8080/support.html" }