orchestrate-0.2.0.0: src/Database/Orchestrate/Network.hs
{-# LANGUAGE OverloadedStrings #-}
{- |
This module implements some network-oriented utility functions.
-}
module Database.Orchestrate.Network
( checkResponse
, checkStatusCode
) where
import qualified Control.Exception as Ex
import Control.Lens
import Network.Wreq
import Database.Orchestrate.Types
-- | This takes a response and checks that the status code passes.
--
-- If the HTTP status code is not OK, this returns an error in the
-- 'OrchestrateT' monad.
checkResponse :: Monad m => Response a -> OrchestrateT m ()
checkResponse = checkStatusCode . view (responseStatus . statusCode)
-- | This checks the status code. Currently 200 and 204 are OK. Everything
-- else is bad. Bad codes throw an exception in 'OrchestrateT'.
checkStatusCode :: Monad m => Int -> OrchestrateT m ()
checkStatusCode 200 = return ()
checkStatusCode 204 = return ()
checkStatusCode rc = throwError
. Ex.SomeException
. Ex.ErrorCall
$ "Invalid response: " ++ show rc