@ -1,12 +1,10 @@
@@ -1,12 +1,10 @@
{- # LANGUAGE BangPatterns # -}
{- # LANGUAGE DeriveGeneric # -}
{- # LANGUAGE DerivingStrategies # -}
{- # LANGUAGE DisambiguateRecordFields # -}
{- # LANGUAGE DuplicateRecordFields # -}
{- # LANGUAGE FlexibleContexts # -}
{- # LANGUAGE FlexibleInstances # -}
{- # LANGUAGE GeneralizedNewtypeDeriving # -}
{- # LANGUAGE MultiWayIf # -}
{- # LANGUAGE OverloadedRecordDot # -}
{- # LANGUAGE RecordWildCards # -}
{- # LANGUAGE ScopedTypeVariables # -}
@ -57,9 +55,8 @@ import GHC.Generics (Generic)
@@ -57,9 +55,8 @@ import GHC.Generics (Generic)
import Text.Megaparsec ( MonadParsec ( takeWhileP ) ,
Parsec ( .. ) , ParsecT , anySingle ,
customFailure , lookAhead , oneOf ,
parse , runParserT , satisfy , single ,
try , unexpected , ( <|> ) )
import Text.Megaparsec ( optional )
optional , parse , runParserT , satisfy ,
single , try , unexpected , ( <|> ) )
import qualified Text.Megaparsec.Error as ME
import Text.Megaparsec.Stream ( Stream ( .. ) )
import Text.Read ( readMaybe )
@ -444,7 +441,7 @@ parseTransaqResponses :: BS.ByteString -> [TransaqResponse]
@@ -444,7 +441,7 @@ parseTransaqResponses :: BS.ByteString -> [TransaqResponse]
parseTransaqResponses bs =
let stream = filter ( not . isWhitespaceText ) . reverse $ execState ( unParsingContext $ process defaultProcess bs ) [] in
case runST $ runParserT ( many txmlParserWrapper ) " " stream of
Left err -> []
Left _ -> []
Right result -> catMaybes result
where
txmlParserWrapper = ( Just <$> txmlParser ) <|> ( skipTag >> pure Nothing )
@ -495,15 +492,15 @@ txmlParser = do
@@ -495,15 +492,15 @@ txmlParser = do
parseResult refResult = do
attr <- takeWhileP Nothing isAttr
mapM_ ( parseResultAttr refResult ) attr
void . single $ ( XmlOpenEnd " result " )
void . single $ XmlOpenEnd " result "
t <- anySingle
case t of
XmlOpen " message " -> do
_ <- takeWhileP Nothing isAttr
void . single $ ( XmlOpenEnd " message " )
void . single $ XmlOpenEnd " message "
( XmlText txt ) <- satisfy isText
void . single $ ( XmlClose " message " )
void . single $ ( XmlClose " result " )
void . single $ XmlClose " message "
void . single $ XmlClose " result "
return . TransaqResponseResult $ ResponseFailure txt
XmlClose " result " -> do
maybeRes <- lift $ readSTRef refResult
@ -515,8 +512,8 @@ txmlParser = do
@@ -515,8 +512,8 @@ txmlParser = do
parseResultAttr refResult ( XmlAttr " success " " true " ) = lift $ writeSTRef refResult ( Just $ ResponseSuccess Nothing )
parseResultAttr refResult ( XmlAttr " success " " false " ) = lift $ writeSTRef refResult ( Just $ ResponseFailure " " )
parseResultAttr refResult attr @ ( XmlAttr " transactionid " trIdStr ) = do
case ( readMaybe ( T . unpack trIdStr ) ) :: Maybe Int64 of
t @ ( Just trId ) -> lift $ writeSTRef refResult ( Just $ ResponseSuccess t )
case readMaybe ( T . unpack trIdStr ) :: Maybe Int64 of
t @ ( Just _ ) -> lift $ writeSTRef refResult ( Just $ ResponseSuccess t )
Nothing -> unexpected $ ME . Tokens $ NE . singleton attr
parseResultAttr _ _ = return ()