om-doh-0.1.0.0: src/OM/DoH/Server.hs
{- | Description: DohApi implementation. -}
module OM.DoH.Server (
server,
) where
import Control.Monad.IO.Class (MonadIO(liftIO))
import Network.DNS (sendRaw)
import OM.DoH.Api (DoHApi(DoHApi, getQuery, postQuery), Query(unQuery),
Response(Response))
import Servant.Server.Generic (AsServerT)
{- |
An implementation of the DoH api that delegates to the local machine's
DNS resolver, using the @resolv@ package (see "Network.DNS").
-}
server :: (MonadIO m) => DoHApi (AsServerT m)
server = DoHApi {
getQuery = liftIO . fmap Response . sendRaw . unQuery,
postQuery = liftIO . fmap Response . sendRaw . unQuery
}