module Web.Ohloh.Response (
Response(..),
xpResponse
) where
import Text.XML.HXT.Arrow.Pickle
import Web.Ohloh.Common
import Web.Ohloh.ResultType
data Response = Response {
respStatus :: String,
respError :: Maybe String,
respItemsReturned :: Maybe Int,
respItemsAvailable :: Maybe Int,
respFirstItemPosition :: Maybe Int,
respResult :: [ResultType]
} deriving (Eq, Show, Read)
instance XmlPickler Response where
xpickle = xpResponse
instance ReadXmlString Response
instance ShowXmlString Response
xpResponse :: PU Response
xpResponse =
xpElem "response" $
xpWrap (uncurry6 Response,
\(Response s e ir ia fip r) ->
(s, e, ir, ia, fip, r)) $
xp6Tuple (xpElem "status" xpText0)
(xpOption (xpElem "error" xpText0))
(xpOption (xpElem "items_returned" xpInt))
(xpOption (xpElem "items_available" xpInt))
(xpOption (xpElem "first_item_position" xpInt))
(xpElem "result" xpickle)