solr-0.2.1.5: library/Solr/HTTPResponseDecoder.hs
module Solr.HTTPResponseDecoder
(
json,
okay,
module HTTPResponseDecoder,
)
where
import Solr.Prelude
import HTTPResponseDecoder
import qualified Data.ByteString.Lazy
import qualified JSONIncrementalDecoder
response :: Matcher ByteString () -> Matcher Int () -> Matcher Data.ByteString.Lazy.ByteString a -> Response a
response contentTypeMatcher statusCodeMatcher bodyMatcher =
fmap snd $
headAndBody head body
where
head =
statusCode statusCodeMatcher *>
headers (header "content-type" contentTypeMatcher)
body =
bodyLazyBytes bodyMatcher
statusIsOkay :: Matcher Int ()
statusIsOkay =
equals 200
contentTypeIsJSON :: Matcher ByteString ()
contentTypeIsJSON =
equals "application/json"
jsonBodyMatcher :: JSONIncrementalDecoder.Value a -> Matcher Data.ByteString.Lazy.ByteString a
jsonBodyMatcher spec =
converts (JSONIncrementalDecoder.valueToLazyByteStringToEither spec)
json :: JSONIncrementalDecoder.Value a -> Response a
json spec =
response whatever statusIsOkay (jsonBodyMatcher spec)
okay :: Response ()
okay =
response whatever statusIsOkay whatever