    ---------------------------------------------------------
    -- |
    -- Module        : Network.Wai.Middleware.HealthCheckEndpoint
    -- Copyright     : Michael Snoyman
    -- License       : BSD3
    --
    -- Maintainer    : Michael Snoyman <michael@snoyman.com>
    -- Stability     : Unstable
    -- Portability   : portable
    --
    -- Add empty endpoint (for Health check tests)
    --
    ---------------------------------------------------------
    module Network.Wai.Middleware.HealthCheckEndpoint
      ( healthCheck,
        voidEndpoint,
      )
    where

    import Data.ByteString (ByteString)
    import Network.HTTP.Types (status200)
    import Network.Wai

    -- | Add empty endpoint (for Health check tests) called \"/_healthz\"
    --
    -- @since 3.1.9
    healthCheck :: Middleware
    healthCheck :: Middleware
    healthCheck = ByteString -> Middleware
    voidEndpoint ByteString
    "/_healthz"

    -- | Add empty endpoint
    --
    -- @since 3.1.9
    voidEndpoint :: ByteString -> Middleware
    voidEndpoint :: ByteString -> Middleware
    voidEndpoint ByteString
    endpointPath Application
    router Request
    request Response -> IO ResponseReceived
    respond =
      if Request -> ByteString
    rawPathInfo Request
    request ByteString -> ByteString -> Bool
    forall a. Eq a => a -> a -> Bool
    == ByteString
    endpointPath
        then Response -> IO ResponseReceived
    respond (Response -> IO ResponseReceived)
    -> Response -> IO ResponseReceived
    forall a b. (a -> b) -> a -> b
    $ Status -> ResponseHeaders -> ByteString -> Response
    responseLBS Status
    status200 ResponseHeaders
    forall a. Monoid a => a
    mempty ByteString
    "-"
        else Application
    router Request
    request Response -> IO ResponseReceived
    respond