packages feed

greskell-websocket-1.0.0.6: src/Network/Greskell/WebSocket/Request/Aeson.hs

-- |
-- Module: Network.Greskell.WebSocket.Request.Aeson
-- Description: parser support
-- Maintainer: Toshio Ito <debug.ito@gmail.com>
--
-- __Internal module. End-users should not use this.__
module Network.Greskell.WebSocket.Request.Aeson
    ( genericToJSON
    , genericToEncoding
    , genericParseJSON
    , opt
    , toObject
    ) where

import           Data.Aeson       (Object, ToJSON (..), Value (Object), genericParseJSON,
                                   genericToEncoding, genericToJSON)
import           Data.Aeson.Types (Options, defaultOptions, omitNothingFields)

opt :: Options
opt = defaultOptions { omitNothingFields = True }

toObject :: (ToJSON a) => a -> Object
toObject = expectObject . toJSON
  where
    expectObject (Object o) = o
    expectObject _          = error "Expect Object, but got something else"