servant-subscriber-0.1.0.0: src/Servant/Subscriber/Backend.hs
-- | A backend for subscriber allows us to query a server and get a response.
-- | We mimick Wai's interface but with 'Request' and 'Response' types that match our needs.
-- | Our only backend right now actually is implemented via the WAI Application interface, see: "Servant.Subscriber.Backend.Wai".
module Servant.Subscriber.Backend where
import qualified Blaze.ByteString.Builder as B
import Control.Concurrent.STM (STM, atomically, retry)
import Control.Concurrent.STM.TVar
import Control.Monad (void)
import Data.Aeson
import qualified Data.ByteString as BS
import qualified Data.CaseInsensitive as Case
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
import Data.Map (Map)
import Data.Text (Text)
import qualified Data.Text.Encoding as T
import Data.Time
import GHC.Generics
import qualified Network.HTTP.Types as H
import qualified Network.Wai as Wai
import qualified Network.Wai.Internal as Wai
import Network.WebSockets.Connection as WS
import Servant.Server
import Servant.Subscriber.Request
import Servant.Subscriber.Response
data ResponseReceived = ResponseReceived
type Application = HttpRequest -> (HttpResponse -> IO ResponseReceived) -> IO ResponseReceived
class Backend a where
requestResource :: a -> Application