speechmatics-0.1.1.0: src/Speechmatics/JSON/PostJob.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DeriveGeneric #-}
-- | Generated from json response, now it's type safe, see the tests
module Speechmatics.JSON.PostJob where
import System.Exit (exitFailure, exitSuccess)
import System.IO (stderr, hPutStrLn)
import qualified Data.ByteString.Lazy.Char8 as BSL
import System.Environment (getArgs)
import Control.Monad (forM_, mzero, join)
import Control.Applicative
import Data.Aeson.AutoType.Alternative
import Data.Aeson(decode, Value(..), FromJSON(..), ToJSON(..),
pairs, eitherDecode,
(.:), (.:?), object)
import Data.Monoid
import Data.Text (Text)
import qualified GHC.Generics
-- | Workaround for https://github.com/bos/aeson/issues/287.
o .:?? val = fmap join (o .:? val)
data PostJob = PostJob {
checkWait :: (Maybe Value),
cost :: Double,
balance :: Double,
postId :: Integer
} deriving (Show,Eq,GHC.Generics.Generic)
instance FromJSON PostJob where
parseJSON (Object v) = PostJob <$> v .:?? "check_wait" <*> v .: "cost" <*> v .: "balance" <*> v .: "id"
parseJSON _ = mzero
parse :: BSL.ByteString -> Either String PostJob
parse = eitherDecode