module Rattletrap.Utility.Helper
( decodeReplayFile
, encodeReplayJson
, decodeReplayJson
, encodeReplayFile
)
where
import Rattletrap.Decode.Common
import Rattletrap.Decode.Replay
import Rattletrap.Encode.Replay
import Rattletrap.Type.Replay
import qualified Data.Aeson as Json
import qualified Data.Aeson.Encode.Pretty as Json
import qualified Data.Binary.Put as Binary
import qualified Data.ByteString as Bytes
import qualified Data.ByteString.Lazy as LazyBytes
decodeReplayFile :: Bytes.ByteString -> Either String Replay
decodeReplayFile = runDecode decodeReplay
encodeReplayJson :: Replay -> Bytes.ByteString
encodeReplayJson = LazyBytes.toStrict . Json.encodePretty' Json.defConfig
{ Json.confCompare = compare
, Json.confIndent = Json.Spaces 2
, Json.confTrailingNewline = True
}
decodeReplayJson :: Bytes.ByteString -> Either String Replay
decodeReplayJson = Json.eitherDecodeStrict'
encodeReplayFile :: Replay -> Bytes.ByteString
encodeReplayFile replay =
LazyBytes.toStrict (Binary.runPut (putReplay replay))