{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-unused-imports #-}
module BfHaskell.StreamingAPI.Model where
import Data.Aeson ((.:), (.:!), (.:?), (.=))
import qualified Control.Arrow as P (left)
import qualified Data.Aeson as A
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.Data as P (Data, Typeable)
import qualified Data.Foldable as P
import qualified Data.HashMap.Lazy as HM
import qualified Data.Map as Map
import qualified Data.Maybe as P
import qualified Data.Set as Set
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Time as TI
import qualified Data.Time.ISO8601 as TI
import Control.Applicative (Alternative)
import Data.Text (Text)
import Prelude (Applicative, Bool (..), Char, Double,
FilePath, Float, Functor, Int, Integer,
Maybe (..), Monad, String, fmap, maybe,
mempty, pure, undefined, ($), (.), (<$>),
(<*>), (=<<), (>>=))
import qualified Prelude as P
newtype DateTime = DateTime { unDateTime :: TI.UTCTime }
deriving (P.Eq,P.Data,P.Ord,P.Typeable,TI.ParseTime,TI.FormatTime)
instance A.FromJSON DateTime where
parseJSON = A.withText "DateTime" (_readDateTime . T.unpack)
instance A.ToJSON DateTime where
toJSON (DateTime t) = A.toJSON (_showDateTime t)
instance P.Show DateTime where
show (DateTime t) = _showDateTime t
_readDateTime :: (TI.ParseTime t, Monad m, Alternative m) => String -> m t
_readDateTime =
_parseISO8601
{-# INLINE _readDateTime #-}
_showDateTime :: (t ~ TI.UTCTime, TI.FormatTime t) => t -> String
_showDateTime =
TI.formatISO8601Millis
{-# INLINE _showDateTime #-}
_parseISO8601 :: (TI.ParseTime t, Monad m, Alternative m) => String -> m t
_parseISO8601 t =
P.asum $
P.flip (TI.parseTimeM True TI.defaultTimeLocale) t <$>
["%FT%T%QZ", "%FT%T%Q%z", "%FT%T%Q%Z"]
{-# INLINE _parseISO8601 #-}
_omitNulls :: [(Text, A.Value)] -> A.Value
_omitNulls = A.object . P.filter notNull
where
notNull (_, A.Null) = False
notNull _ = True
data AllRequestTypesExample = AllRequestTypesExample
{ allRequestTypesExampleOpTypes :: !(Maybe E'OpTypes)
, allRequestTypesExampleHeartbeat :: !(Maybe HeartbeatMessage)
, allRequestTypesExampleOrderSubscriptionMessage :: !(Maybe OrderSubscriptionMessage)
, allRequestTypesExampleMarketSubscription :: !(Maybe MarketSubscriptionMessage)
, allRequestTypesExampleAuthentication :: !(Maybe AuthenticationMessage)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON AllRequestTypesExample where
parseJSON = A.withObject "AllRequestTypesExample" $ \o ->
AllRequestTypesExample
<$> (o .:? "opTypes")
<*> (o .:? "heartbeat")
<*> (o .:? "orderSubscriptionMessage")
<*> (o .:? "marketSubscription")
<*> (o .:? "authentication")
instance A.ToJSON AllRequestTypesExample where
toJSON AllRequestTypesExample {..} =
_omitNulls
[ "opTypes" .= allRequestTypesExampleOpTypes
, "heartbeat" .= allRequestTypesExampleHeartbeat
, "orderSubscriptionMessage" .= allRequestTypesExampleOrderSubscriptionMessage
, "marketSubscription" .= allRequestTypesExampleMarketSubscription
, "authentication" .= allRequestTypesExampleAuthentication
]
mkAllRequestTypesExample
:: AllRequestTypesExample
mkAllRequestTypesExample =
AllRequestTypesExample
{ allRequestTypesExampleOpTypes = Nothing
, allRequestTypesExampleHeartbeat = Nothing
, allRequestTypesExampleOrderSubscriptionMessage = Nothing
, allRequestTypesExampleMarketSubscription = Nothing
, allRequestTypesExampleAuthentication = Nothing
}
data StreamResponse = SRMarketChangeMessage MarketChangeMessage
| SRConnectionMessage ConnectionMessage
| SROrderChangeMessage OrderChangeMessage
| SRStatusMessage StatusMessage
deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON StreamResponse where
parseJSON = A.withObject "StreamResponse" $ \o -> do
opType <- o .: "op"
let v = A.Object o
case opType of
E'OpTypes2'Connection -> SRConnectionMessage <$> A.parseJSON v
E'OpTypes2'Status -> SRStatusMessage <$> A.parseJSON v
E'OpTypes2'Mcm -> SRMarketChangeMessage <$> A.parseJSON v
E'OpTypes2'Ocm -> SROrderChangeMessage <$> A.parseJSON v
data AllResponseTypesExample = AllResponseTypesExample
{ allResponseTypesExampleOpTypes :: !(Maybe E'OpTypes2)
, allResponseTypesExampleMarketChangeMessage :: !(Maybe MarketChangeMessage)
, allResponseTypesExampleConnection :: !(Maybe ConnectionMessage)
, allResponseTypesExampleOrderChangeMessage :: !(Maybe OrderChangeMessage)
, allResponseTypesExampleStatus :: !(Maybe StatusMessage)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON AllResponseTypesExample where
parseJSON = A.withObject "AllResponseTypesExample" $ \o ->
AllResponseTypesExample
<$> (o .:? "opTypes")
<*> (o .:? "marketChangeMessage")
<*> (o .:? "connection")
<*> (o .:? "orderChangeMessage")
<*> (o .:? "status")
instance A.ToJSON AllResponseTypesExample where
toJSON AllResponseTypesExample {..} =
_omitNulls
[ "opTypes" .= allResponseTypesExampleOpTypes
, "marketChangeMessage" .= allResponseTypesExampleMarketChangeMessage
, "connection" .= allResponseTypesExampleConnection
, "orderChangeMessage" .= allResponseTypesExampleOrderChangeMessage
, "status" .= allResponseTypesExampleStatus
]
mkAllResponseTypesExample
:: AllResponseTypesExample
mkAllResponseTypesExample =
AllResponseTypesExample
{ allResponseTypesExampleOpTypes = Nothing
, allResponseTypesExampleMarketChangeMessage = Nothing
, allResponseTypesExampleConnection = Nothing
, allResponseTypesExampleOrderChangeMessage = Nothing
, allResponseTypesExampleStatus = Nothing
}
data KeyLineDefinition = KeyLineDefinition
{ keyLineDefinitionKl :: !(Maybe [KeyLineSelection])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON KeyLineDefinition where
parseJSON = A.withObject "KeyLineDefinition" $ \o ->
KeyLineDefinition
<$> (o .:? "kl")
instance A.ToJSON KeyLineDefinition where
toJSON KeyLineDefinition {..} =
_omitNulls
[ "kl" .= keyLineDefinitionKl
]
mkKeyLineDefinition
:: KeyLineDefinition
mkKeyLineDefinition =
KeyLineDefinition
{ keyLineDefinitionKl = Nothing
}
data KeyLineSelection = KeyLineSelection
{ keyLineSelectionId :: !(Maybe Integer)
, keyLineSelectionHc :: !(Maybe Double)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON KeyLineSelection where
parseJSON = A.withObject "KeyLineSelection" $ \o ->
KeyLineSelection
<$> (o .:? "id")
<*> (o .:? "hc")
instance A.ToJSON KeyLineSelection where
toJSON KeyLineSelection {..} =
_omitNulls
[ "id" .= keyLineSelectionId
, "hc" .= keyLineSelectionHc
]
mkKeyLineSelection
:: KeyLineSelection
mkKeyLineSelection =
KeyLineSelection
{ keyLineSelectionId = Nothing
, keyLineSelectionHc = Nothing
}
data MarketChange = MarketChange
{ marketChangeRc :: !(Maybe [RunnerChange])
, marketChangeImg :: !(Maybe Bool)
, marketChangeTv :: !(Maybe Double)
, marketChangeCon :: !(Maybe Bool)
, marketChangeMarketDefinition :: !(Maybe MarketDefinition)
, marketChangeId :: !(Maybe Text)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketChange where
parseJSON = A.withObject "MarketChange" $ \o ->
MarketChange
<$> (o .:? "rc")
<*> (o .:? "img")
<*> (o .:? "tv")
<*> (o .:? "con")
<*> (o .:? "marketDefinition")
<*> (o .:? "id")
instance A.ToJSON MarketChange where
toJSON MarketChange {..} =
_omitNulls
[ "rc" .= marketChangeRc
, "img" .= marketChangeImg
, "tv" .= marketChangeTv
, "con" .= marketChangeCon
, "marketDefinition" .= marketChangeMarketDefinition
, "id" .= marketChangeId
]
mkMarketChange
:: MarketChange
mkMarketChange =
MarketChange
{ marketChangeRc = Nothing
, marketChangeImg = Nothing
, marketChangeTv = Nothing
, marketChangeCon = Nothing
, marketChangeMarketDefinition = Nothing
, marketChangeId = Nothing
}
data MarketDataFilter = MarketDataFilter
{ marketDataFilterLadderLevels :: !(Maybe Int)
, marketDataFilterFields :: !(Maybe [E'Fields])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketDataFilter where
parseJSON = A.withObject "MarketDataFilter" $ \o ->
MarketDataFilter
<$> (o .:? "ladderLevels")
<*> (o .:? "fields")
instance A.ToJSON MarketDataFilter where
toJSON MarketDataFilter {..} =
_omitNulls
[ "ladderLevels" .= marketDataFilterLadderLevels
, "fields" .= marketDataFilterFields
]
mkMarketDataFilter
:: MarketDataFilter
mkMarketDataFilter =
MarketDataFilter
{ marketDataFilterLadderLevels = Nothing
, marketDataFilterFields = Nothing
}
data MarketDefinition = MarketDefinition
{ marketDefinitionVenue :: !(Maybe Text)
, marketDefinitionRaceType :: !(Maybe Text)
, marketDefinitionSettledTime :: !(Maybe DateTime)
, marketDefinitionTimezone :: !(Maybe Text)
, marketDefinitionEachWayDivisor :: !(Maybe Double)
, marketDefinitionRegulators :: !(Maybe [Text])
, marketDefinitionMarketType :: !(Maybe Text)
, marketDefinitionMarketBaseRate :: !(Maybe Double)
, marketDefinitionNumberOfWinners :: !(Maybe Int)
, marketDefinitionCountryCode :: !(Maybe Text)
, marketDefinitionLineMaxUnit :: !(Maybe Double)
, marketDefinitionInPlay :: !(Maybe Bool)
, marketDefinitionBetDelay :: !(Maybe Int)
, marketDefinitionBspMarket :: !(Maybe Bool)
, marketDefinitionBettingType :: !(Maybe E'BettingTypes)
, marketDefinitionNumberOfActiveRunners :: !(Maybe Int)
, marketDefinitionLineMinUnit :: !(Maybe Double)
, marketDefinitionEventId :: !(Maybe Text)
, marketDefinitionCrossMatching :: !(Maybe Bool)
, marketDefinitionRunnersVoidable :: !(Maybe Bool)
, marketDefinitionTurnInPlayEnabled :: !(Maybe Bool)
, marketDefinitionPriceLadderDefinition :: !(Maybe PriceLadderDefinition)
, marketDefinitionKeyLineDefinition :: !(Maybe KeyLineDefinition)
, marketDefinitionSuspendTime :: !(Maybe DateTime)
, marketDefinitionDiscountAllowed :: !(Maybe Bool)
, marketDefinitionPersistenceEnabled :: !(Maybe Bool)
, marketDefinitionRunners :: !(Maybe [RunnerDefinition])
, marketDefinitionVersion :: !(Maybe Integer)
, marketDefinitionEventTypeId :: !(Maybe Text)
, marketDefinitionComplete :: !(Maybe Bool)
, marketDefinitionOpenDate :: !(Maybe DateTime)
, marketDefinitionMarketTime :: !(Maybe DateTime)
, marketDefinitionBspReconciled :: !(Maybe Bool)
, marketDefinitionLineInterval :: !(Maybe Double)
, marketDefinitionStatus :: !(Maybe E'Status)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketDefinition where
parseJSON = A.withObject "MarketDefinition" $ \o ->
MarketDefinition
<$> (o .:? "venue")
<*> (o .:? "raceType")
<*> (o .:? "settledTime")
<*> (o .:? "timezone")
<*> (o .:? "eachWayDivisor")
<*> (o .:? "regulators")
<*> (o .:? "marketType")
<*> (o .:? "marketBaseRate")
<*> (o .:? "numberOfWinners")
<*> (o .:? "countryCode")
<*> (o .:? "lineMaxUnit")
<*> (o .:? "inPlay")
<*> (o .:? "betDelay")
<*> (o .:? "bspMarket")
<*> (o .:? "bettingType")
<*> (o .:? "numberOfActiveRunners")
<*> (o .:? "lineMinUnit")
<*> (o .:? "eventId")
<*> (o .:? "crossMatching")
<*> (o .:? "runnersVoidable")
<*> (o .:? "turnInPlayEnabled")
<*> (o .:? "priceLadderDefinition")
<*> (o .:? "keyLineDefinition")
<*> (o .:? "suspendTime")
<*> (o .:? "discountAllowed")
<*> (o .:? "persistenceEnabled")
<*> (o .:? "runners")
<*> (o .:? "version")
<*> (o .:? "eventTypeId")
<*> (o .:? "complete")
<*> (o .:? "openDate")
<*> (o .:? "marketTime")
<*> (o .:? "bspReconciled")
<*> (o .:? "lineInterval")
<*> (o .:? "status")
instance A.ToJSON MarketDefinition where
toJSON MarketDefinition {..} =
_omitNulls
[ "venue" .= marketDefinitionVenue
, "raceType" .= marketDefinitionRaceType
, "settledTime" .= marketDefinitionSettledTime
, "timezone" .= marketDefinitionTimezone
, "eachWayDivisor" .= marketDefinitionEachWayDivisor
, "regulators" .= marketDefinitionRegulators
, "marketType" .= marketDefinitionMarketType
, "marketBaseRate" .= marketDefinitionMarketBaseRate
, "numberOfWinners" .= marketDefinitionNumberOfWinners
, "countryCode" .= marketDefinitionCountryCode
, "lineMaxUnit" .= marketDefinitionLineMaxUnit
, "inPlay" .= marketDefinitionInPlay
, "betDelay" .= marketDefinitionBetDelay
, "bspMarket" .= marketDefinitionBspMarket
, "bettingType" .= marketDefinitionBettingType
, "numberOfActiveRunners" .= marketDefinitionNumberOfActiveRunners
, "lineMinUnit" .= marketDefinitionLineMinUnit
, "eventId" .= marketDefinitionEventId
, "crossMatching" .= marketDefinitionCrossMatching
, "runnersVoidable" .= marketDefinitionRunnersVoidable
, "turnInPlayEnabled" .= marketDefinitionTurnInPlayEnabled
, "priceLadderDefinition" .= marketDefinitionPriceLadderDefinition
, "keyLineDefinition" .= marketDefinitionKeyLineDefinition
, "suspendTime" .= marketDefinitionSuspendTime
, "discountAllowed" .= marketDefinitionDiscountAllowed
, "persistenceEnabled" .= marketDefinitionPersistenceEnabled
, "runners" .= marketDefinitionRunners
, "version" .= marketDefinitionVersion
, "eventTypeId" .= marketDefinitionEventTypeId
, "complete" .= marketDefinitionComplete
, "openDate" .= marketDefinitionOpenDate
, "marketTime" .= marketDefinitionMarketTime
, "bspReconciled" .= marketDefinitionBspReconciled
, "lineInterval" .= marketDefinitionLineInterval
, "status" .= marketDefinitionStatus
]
mkMarketDefinition
:: MarketDefinition
mkMarketDefinition =
MarketDefinition
{ marketDefinitionVenue = Nothing
, marketDefinitionRaceType = Nothing
, marketDefinitionSettledTime = Nothing
, marketDefinitionTimezone = Nothing
, marketDefinitionEachWayDivisor = Nothing
, marketDefinitionRegulators = Nothing
, marketDefinitionMarketType = Nothing
, marketDefinitionMarketBaseRate = Nothing
, marketDefinitionNumberOfWinners = Nothing
, marketDefinitionCountryCode = Nothing
, marketDefinitionLineMaxUnit = Nothing
, marketDefinitionInPlay = Nothing
, marketDefinitionBetDelay = Nothing
, marketDefinitionBspMarket = Nothing
, marketDefinitionBettingType = Nothing
, marketDefinitionNumberOfActiveRunners = Nothing
, marketDefinitionLineMinUnit = Nothing
, marketDefinitionEventId = Nothing
, marketDefinitionCrossMatching = Nothing
, marketDefinitionRunnersVoidable = Nothing
, marketDefinitionTurnInPlayEnabled = Nothing
, marketDefinitionPriceLadderDefinition = Nothing
, marketDefinitionKeyLineDefinition = Nothing
, marketDefinitionSuspendTime = Nothing
, marketDefinitionDiscountAllowed = Nothing
, marketDefinitionPersistenceEnabled = Nothing
, marketDefinitionRunners = Nothing
, marketDefinitionVersion = Nothing
, marketDefinitionEventTypeId = Nothing
, marketDefinitionComplete = Nothing
, marketDefinitionOpenDate = Nothing
, marketDefinitionMarketTime = Nothing
, marketDefinitionBspReconciled = Nothing
, marketDefinitionLineInterval = Nothing
, marketDefinitionStatus = Nothing
}
data MarketFilter = MarketFilter
{ marketFilterCountryCodes :: !(Maybe [Text])
, marketFilterBettingTypes :: !(Maybe [E'BettingTypes])
, marketFilterTurnInPlayEnabled :: !(Maybe Bool)
, marketFilterMarketTypes :: !(Maybe [Text])
, marketFilterVenues :: !(Maybe [Text])
, marketFilterMarketIds :: !(Maybe [Text])
, marketFilterEventTypeIds :: !(Maybe [Text])
, marketFilterEventIds :: !(Maybe [Text])
, marketFilterBspMarket :: !(Maybe Bool)
, marketFilterRaceTypes :: !(Maybe [Text])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketFilter where
parseJSON = A.withObject "MarketFilter" $ \o ->
MarketFilter
<$> (o .:? "countryCodes")
<*> (o .:? "bettingTypes")
<*> (o .:? "turnInPlayEnabled")
<*> (o .:? "marketTypes")
<*> (o .:? "venues")
<*> (o .:? "marketIds")
<*> (o .:? "eventTypeIds")
<*> (o .:? "eventIds")
<*> (o .:? "bspMarket")
<*> (o .:? "raceTypes")
instance A.ToJSON MarketFilter where
toJSON MarketFilter {..} =
_omitNulls
[ "countryCodes" .= marketFilterCountryCodes
, "bettingTypes" .= marketFilterBettingTypes
, "turnInPlayEnabled" .= marketFilterTurnInPlayEnabled
, "marketTypes" .= marketFilterMarketTypes
, "venues" .= marketFilterVenues
, "marketIds" .= marketFilterMarketIds
, "eventTypeIds" .= marketFilterEventTypeIds
, "eventIds" .= marketFilterEventIds
, "bspMarket" .= marketFilterBspMarket
, "raceTypes" .= marketFilterRaceTypes
]
mkMarketFilter
:: MarketFilter
mkMarketFilter =
MarketFilter
{ marketFilterCountryCodes = Nothing
, marketFilterBettingTypes = Nothing
, marketFilterTurnInPlayEnabled = Nothing
, marketFilterMarketTypes = Nothing
, marketFilterVenues = Nothing
, marketFilterMarketIds = Nothing
, marketFilterEventTypeIds = Nothing
, marketFilterEventIds = Nothing
, marketFilterBspMarket = Nothing
, marketFilterRaceTypes = Nothing
}
data Order = Order
{ orderSide :: !(Maybe E'Side)
, orderSv :: !(Maybe Double)
, orderPt :: !(Maybe E'Pt)
, orderOt :: !(Maybe E'Ot)
, orderP :: !(Maybe Double)
, orderSc :: !(Maybe Double)
, orderRc :: !(Maybe Text)
, orderS :: !(Maybe Double)
, orderPd :: !(Maybe Integer)
, orderRac :: !(Maybe Text)
, orderMd :: !(Maybe Integer)
, orderLd :: !(Maybe Integer)
, orderSl :: !(Maybe Double)
, orderAvp :: !(Maybe Double)
, orderSm :: !(Maybe Double)
, orderRfo :: !(Maybe Text)
, orderId :: !(Maybe Text)
, orderBsp :: !(Maybe Double)
, orderRfs :: !(Maybe Text)
, orderStatus :: !(Maybe E'Status3)
, orderSr :: !(Maybe Double)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON Order where
parseJSON = A.withObject "Order" $ \o ->
Order
<$> (o .:? "side")
<*> (o .:? "sv")
<*> (o .:? "pt")
<*> (o .:? "ot")
<*> (o .:? "p")
<*> (o .:? "sc")
<*> (o .:? "rc")
<*> (o .:? "s")
<*> (o .:? "pd")
<*> (o .:? "rac")
<*> (o .:? "md")
<*> (o .:? "ld")
<*> (o .:? "sl")
<*> (o .:? "avp")
<*> (o .:? "sm")
<*> (o .:? "rfo")
<*> (o .:? "id")
<*> (o .:? "bsp")
<*> (o .:? "rfs")
<*> (o .:? "status")
<*> (o .:? "sr")
instance A.ToJSON Order where
toJSON Order {..} =
_omitNulls
[ "side" .= orderSide
, "sv" .= orderSv
, "pt" .= orderPt
, "ot" .= orderOt
, "p" .= orderP
, "sc" .= orderSc
, "rc" .= orderRc
, "s" .= orderS
, "pd" .= orderPd
, "rac" .= orderRac
, "md" .= orderMd
, "ld" .= orderLd
, "sl" .= orderSl
, "avp" .= orderAvp
, "sm" .= orderSm
, "rfo" .= orderRfo
, "id" .= orderId
, "bsp" .= orderBsp
, "rfs" .= orderRfs
, "status" .= orderStatus
, "sr" .= orderSr
]
mkOrder
:: Order
mkOrder =
Order
{ orderSide = Nothing
, orderSv = Nothing
, orderPt = Nothing
, orderOt = Nothing
, orderP = Nothing
, orderSc = Nothing
, orderRc = Nothing
, orderS = Nothing
, orderPd = Nothing
, orderRac = Nothing
, orderMd = Nothing
, orderLd = Nothing
, orderSl = Nothing
, orderAvp = Nothing
, orderSm = Nothing
, orderRfo = Nothing
, orderId = Nothing
, orderBsp = Nothing
, orderRfs = Nothing
, orderStatus = Nothing
, orderSr = Nothing
}
data OrderFilter = OrderFilter
{ orderFilterIncludeOverallPosition :: !(Maybe Bool)
, orderFilterAccountIds :: !(Maybe [Integer])
, orderFilterCustomerStrategyRefs :: !(Maybe [Text])
, orderFilterPartitionMatchedByStrategyRef :: !(Maybe Bool)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON OrderFilter where
parseJSON = A.withObject "OrderFilter" $ \o ->
OrderFilter
<$> (o .:? "includeOverallPosition")
<*> (o .:? "accountIds")
<*> (o .:? "customerStrategyRefs")
<*> (o .:? "partitionMatchedByStrategyRef")
instance A.ToJSON OrderFilter where
toJSON OrderFilter {..} =
_omitNulls
[ "includeOverallPosition" .= orderFilterIncludeOverallPosition
, "accountIds" .= orderFilterAccountIds
, "customerStrategyRefs" .= orderFilterCustomerStrategyRefs
, "partitionMatchedByStrategyRef" .= orderFilterPartitionMatchedByStrategyRef
]
mkOrderFilter
:: OrderFilter
mkOrderFilter =
OrderFilter
{ orderFilterIncludeOverallPosition = Nothing
, orderFilterAccountIds = Nothing
, orderFilterCustomerStrategyRefs = Nothing
, orderFilterPartitionMatchedByStrategyRef = Nothing
}
data OrderMarketChange = OrderMarketChange
{ orderMarketChangeAccountId :: !(Maybe Integer)
, orderMarketChangeOrc :: !(Maybe [OrderRunnerChange])
, orderMarketChangeClosed :: !(Maybe Bool)
, orderMarketChangeId :: !(Maybe Text)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON OrderMarketChange where
parseJSON = A.withObject "OrderMarketChange" $ \o ->
OrderMarketChange
<$> (o .:? "accountId")
<*> (o .:? "orc")
<*> (o .:? "closed")
<*> (o .:? "id")
instance A.ToJSON OrderMarketChange where
toJSON OrderMarketChange {..} =
_omitNulls
[ "accountId" .= orderMarketChangeAccountId
, "orc" .= orderMarketChangeOrc
, "closed" .= orderMarketChangeClosed
, "id" .= orderMarketChangeId
]
mkOrderMarketChange
:: OrderMarketChange
mkOrderMarketChange =
OrderMarketChange
{ orderMarketChangeAccountId = Nothing
, orderMarketChangeOrc = Nothing
, orderMarketChangeClosed = Nothing
, orderMarketChangeId = Nothing
}
data OrderRunnerChange = OrderRunnerChange
{ orderRunnerChangeMb :: !(Maybe [[Double]])
, orderRunnerChangeSmc :: !(Maybe (Map.Map String StrategyMatchChange))
, orderRunnerChangeUo :: !(Maybe [Order])
, orderRunnerChangeId :: !(Maybe Integer)
, orderRunnerChangeHc :: !(Maybe Double)
, orderRunnerChangeFullImage :: !(Maybe Bool)
, orderRunnerChangeMl :: !(Maybe [[Double]])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON OrderRunnerChange where
parseJSON = A.withObject "OrderRunnerChange" $ \o ->
OrderRunnerChange
<$> (o .:? "mb")
<*> (o .:? "smc")
<*> (o .:? "uo")
<*> (o .:? "id")
<*> (o .:? "hc")
<*> (o .:? "fullImage")
<*> (o .:? "ml")
instance A.ToJSON OrderRunnerChange where
toJSON OrderRunnerChange {..} =
_omitNulls
[ "mb" .= orderRunnerChangeMb
, "smc" .= orderRunnerChangeSmc
, "uo" .= orderRunnerChangeUo
, "id" .= orderRunnerChangeId
, "hc" .= orderRunnerChangeHc
, "fullImage" .= orderRunnerChangeFullImage
, "ml" .= orderRunnerChangeMl
]
mkOrderRunnerChange
:: OrderRunnerChange
mkOrderRunnerChange =
OrderRunnerChange
{ orderRunnerChangeMb = Nothing
, orderRunnerChangeSmc = Nothing
, orderRunnerChangeUo = Nothing
, orderRunnerChangeId = Nothing
, orderRunnerChangeHc = Nothing
, orderRunnerChangeFullImage = Nothing
, orderRunnerChangeMl = Nothing
}
data PriceLadderDefinition = PriceLadderDefinition
{ priceLadderDefinitionType :: !(Maybe E'Type)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON PriceLadderDefinition where
parseJSON = A.withObject "PriceLadderDefinition" $ \o ->
PriceLadderDefinition
<$> (o .:? "type")
instance A.ToJSON PriceLadderDefinition where
toJSON PriceLadderDefinition {..} =
_omitNulls
[ "type" .= priceLadderDefinitionType
]
mkPriceLadderDefinition
:: PriceLadderDefinition
mkPriceLadderDefinition =
PriceLadderDefinition
{ priceLadderDefinitionType = Nothing
}
data RequestMessage = RequestMessage
{ requestMessageOp :: !(Maybe Text)
, requestMessageId :: !(Maybe Int)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON RequestMessage where
parseJSON = A.withObject "RequestMessage" $ \o ->
RequestMessage
<$> (o .:? "op")
<*> (o .:? "id")
instance A.ToJSON RequestMessage where
toJSON RequestMessage {..} =
_omitNulls
[ "op" .= requestMessageOp
, "id" .= requestMessageId
]
mkRequestMessage
:: RequestMessage
mkRequestMessage =
RequestMessage
{ requestMessageOp = Nothing
, requestMessageId = Nothing
}
data ResponseMessage = ResponseMessage
{ responseMessageOp :: !(Maybe Text)
, responseMessageId :: !(Maybe Int)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON ResponseMessage where
parseJSON = A.withObject "ResponseMessage" $ \o ->
ResponseMessage
<$> (o .:? "op")
<*> (o .:? "id")
instance A.ToJSON ResponseMessage where
toJSON ResponseMessage {..} =
_omitNulls
[ "op" .= responseMessageOp
, "id" .= responseMessageId
]
mkResponseMessage
:: ResponseMessage
mkResponseMessage =
ResponseMessage
{ responseMessageOp = Nothing
, responseMessageId = Nothing
}
data RunnerChange = RunnerChange
{ runnerChangeTv :: !(Maybe Double)
, runnerChangeBatb :: !(Maybe [[Double]])
, runnerChangeSpb :: !(Maybe [[Double]])
, runnerChangeBdatl :: !(Maybe [[Double]])
, runnerChangeTrd :: !(Maybe [[Double]])
, runnerChangeSpf :: !(Maybe Double)
, runnerChangeLtp :: !(Maybe Double)
, runnerChangeAtb :: !(Maybe [[Double]])
, runnerChangeSpl :: !(Maybe [[Double]])
, runnerChangeSpn :: !(Maybe Double)
, runnerChangeAtl :: !(Maybe [[Double]])
, runnerChangeBatl :: !(Maybe [[Double]])
, runnerChangeId :: !(Maybe Integer)
, runnerChangeHc :: !(Maybe Double)
, runnerChangeBdatb :: !(Maybe [[Double]])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON RunnerChange where
parseJSON = A.withObject "RunnerChange" $ \o ->
RunnerChange
<$> (o .:? "tv")
<*> (o .:? "batb")
<*> (o .:? "spb")
<*> (o .:? "bdatl")
<*> (o .:? "trd")
<*> (o .:? "spf")
<*> (o .:? "ltp")
<*> (o .:? "atb")
<*> (o .:? "spl")
<*> (o .:? "spn")
<*> (o .:? "atl")
<*> (o .:? "batl")
<*> (o .:? "id")
<*> (o .:? "hc")
<*> (o .:? "bdatb")
instance A.ToJSON RunnerChange where
toJSON RunnerChange {..} =
_omitNulls
[ "tv" .= runnerChangeTv
, "batb" .= runnerChangeBatb
, "spb" .= runnerChangeSpb
, "bdatl" .= runnerChangeBdatl
, "trd" .= runnerChangeTrd
, "spf" .= runnerChangeSpf
, "ltp" .= runnerChangeLtp
, "atb" .= runnerChangeAtb
, "spl" .= runnerChangeSpl
, "spn" .= runnerChangeSpn
, "atl" .= runnerChangeAtl
, "batl" .= runnerChangeBatl
, "id" .= runnerChangeId
, "hc" .= runnerChangeHc
, "bdatb" .= runnerChangeBdatb
]
mkRunnerChange
:: RunnerChange
mkRunnerChange =
RunnerChange
{ runnerChangeTv = Nothing
, runnerChangeBatb = Nothing
, runnerChangeSpb = Nothing
, runnerChangeBdatl = Nothing
, runnerChangeTrd = Nothing
, runnerChangeSpf = Nothing
, runnerChangeLtp = Nothing
, runnerChangeAtb = Nothing
, runnerChangeSpl = Nothing
, runnerChangeSpn = Nothing
, runnerChangeAtl = Nothing
, runnerChangeBatl = Nothing
, runnerChangeId = Nothing
, runnerChangeHc = Nothing
, runnerChangeBdatb = Nothing
}
data RunnerDefinition = RunnerDefinition
{ runnerDefinitionSortPriority :: !(Maybe Int)
, runnerDefinitionRemovalDate :: !(Maybe DateTime)
, runnerDefinitionId :: !(Maybe Integer)
, runnerDefinitionHc :: !(Maybe Double)
, runnerDefinitionAdjustmentFactor :: !(Maybe Double)
, runnerDefinitionBsp :: !(Maybe Double)
, runnerDefinitionStatus :: !(Maybe E'Status2)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON RunnerDefinition where
parseJSON = A.withObject "RunnerDefinition" $ \o ->
RunnerDefinition
<$> (o .:? "sortPriority")
<*> (o .:? "removalDate")
<*> (o .:? "id")
<*> (o .:? "hc")
<*> (o .:? "adjustmentFactor")
<*> (o .:? "bsp")
<*> (o .:? "status")
instance A.ToJSON RunnerDefinition where
toJSON RunnerDefinition {..} =
_omitNulls
[ "sortPriority" .= runnerDefinitionSortPriority
, "removalDate" .= runnerDefinitionRemovalDate
, "id" .= runnerDefinitionId
, "hc" .= runnerDefinitionHc
, "adjustmentFactor" .= runnerDefinitionAdjustmentFactor
, "bsp" .= runnerDefinitionBsp
, "status" .= runnerDefinitionStatus
]
mkRunnerDefinition
:: RunnerDefinition
mkRunnerDefinition =
RunnerDefinition
{ runnerDefinitionSortPriority = Nothing
, runnerDefinitionRemovalDate = Nothing
, runnerDefinitionId = Nothing
, runnerDefinitionHc = Nothing
, runnerDefinitionAdjustmentFactor = Nothing
, runnerDefinitionBsp = Nothing
, runnerDefinitionStatus = Nothing
}
data StrategyMatchChange = StrategyMatchChange
{ strategyMatchChangeMb :: !(Maybe [[Double]])
, strategyMatchChangeMl :: !(Maybe [[Double]])
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON StrategyMatchChange where
parseJSON = A.withObject "StrategyMatchChange" $ \o ->
StrategyMatchChange
<$> (o .:? "mb")
<*> (o .:? "ml")
instance A.ToJSON StrategyMatchChange where
toJSON StrategyMatchChange {..} =
_omitNulls
[ "mb" .= strategyMatchChangeMb
, "ml" .= strategyMatchChangeMl
]
mkStrategyMatchChange
:: StrategyMatchChange
mkStrategyMatchChange =
StrategyMatchChange
{ strategyMatchChangeMb = Nothing
, strategyMatchChangeMl = Nothing
}
data AuthenticationMessage = AuthenticationMessage
{ authenticationMessageOp :: !(Maybe Text)
, authenticationMessageId :: !(Maybe Int)
, authenticationMessageSession :: !(Maybe Text)
, authenticationMessageAppKey :: !(Maybe Text)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON AuthenticationMessage where
parseJSON = A.withObject "AuthenticationMessage" $ \o ->
AuthenticationMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "session")
<*> (o .:? "appKey")
instance A.ToJSON AuthenticationMessage where
toJSON AuthenticationMessage {..} =
_omitNulls
[ "op" .= authenticationMessageOp
, "id" .= authenticationMessageId
, "session" .= authenticationMessageSession
, "appKey" .= authenticationMessageAppKey
]
mkAuthenticationMessage
:: AuthenticationMessage
mkAuthenticationMessage =
AuthenticationMessage
{ authenticationMessageOp = Just "authentication"
, authenticationMessageId = Nothing
, authenticationMessageSession = Nothing
, authenticationMessageAppKey = Nothing
}
data ConnectionMessage = ConnectionMessage
{ connectionMessageOp :: !(Maybe Text)
, connectionMessageId :: !(Maybe Int)
, connectionMessageConnectionId :: !(Maybe Text)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON ConnectionMessage where
parseJSON = A.withObject "ConnectionMessage" $ \o ->
ConnectionMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "connectionId")
instance A.ToJSON ConnectionMessage where
toJSON ConnectionMessage {..} =
_omitNulls
[ "op" .= connectionMessageOp
, "id" .= connectionMessageId
, "connectionId" .= connectionMessageConnectionId
]
mkConnectionMessage
:: ConnectionMessage
mkConnectionMessage =
ConnectionMessage
{ connectionMessageOp = Nothing
, connectionMessageId = Nothing
, connectionMessageConnectionId = Nothing
}
data HeartbeatMessage = HeartbeatMessage
{ heartbeatMessageOp :: !(Maybe Text)
, heartbeatMessageId :: !(Maybe Int)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON HeartbeatMessage where
parseJSON = A.withObject "HeartbeatMessage" $ \o ->
HeartbeatMessage
<$> (o .:? "op")
<*> (o .:? "id")
instance A.ToJSON HeartbeatMessage where
toJSON HeartbeatMessage {..} =
_omitNulls
[ "op" .= heartbeatMessageOp
, "id" .= heartbeatMessageId
]
mkHeartbeatMessage
:: HeartbeatMessage
mkHeartbeatMessage =
HeartbeatMessage
{ heartbeatMessageOp = Nothing
, heartbeatMessageId = Nothing
}
data MarketChangeMessage = MarketChangeMessage
{ marketChangeMessageOp :: !(Maybe Text)
, marketChangeMessageId :: !(Maybe Int)
, marketChangeMessageCt :: !(Maybe E'Ct)
, marketChangeMessageClk :: !(Maybe Text)
, marketChangeMessageHeartbeatMs :: !(Maybe Integer)
, marketChangeMessagePt :: !(Maybe Integer)
, marketChangeMessageInitialClk :: !(Maybe Text)
, marketChangeMessageMc :: !(Maybe [MarketChange])
, marketChangeMessageConflateMs :: !(Maybe Integer)
, marketChangeMessageSegmentType :: !(Maybe E'SegmentType)
, marketChangeMessageStatus :: !(Maybe Int)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketChangeMessage where
parseJSON = A.withObject "MarketChangeMessage" $ \o ->
MarketChangeMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "ct")
<*> (o .:? "clk")
<*> (o .:? "heartbeatMs")
<*> (o .:? "pt")
<*> (o .:? "initialClk")
<*> (o .:? "mc")
<*> (o .:? "conflateMs")
<*> (o .:? "segmentType")
<*> (o .:? "status")
instance A.ToJSON MarketChangeMessage where
toJSON MarketChangeMessage {..} =
_omitNulls
[ "op" .= marketChangeMessageOp
, "id" .= marketChangeMessageId
, "ct" .= marketChangeMessageCt
, "clk" .= marketChangeMessageClk
, "heartbeatMs" .= marketChangeMessageHeartbeatMs
, "pt" .= marketChangeMessagePt
, "initialClk" .= marketChangeMessageInitialClk
, "mc" .= marketChangeMessageMc
, "conflateMs" .= marketChangeMessageConflateMs
, "segmentType" .= marketChangeMessageSegmentType
, "status" .= marketChangeMessageStatus
]
mkMarketChangeMessage
:: MarketChangeMessage
mkMarketChangeMessage =
MarketChangeMessage
{ marketChangeMessageOp = Nothing
, marketChangeMessageId = Nothing
, marketChangeMessageCt = Nothing
, marketChangeMessageClk = Nothing
, marketChangeMessageHeartbeatMs = Nothing
, marketChangeMessagePt = Nothing
, marketChangeMessageInitialClk = Nothing
, marketChangeMessageMc = Nothing
, marketChangeMessageConflateMs = Nothing
, marketChangeMessageSegmentType = Nothing
, marketChangeMessageStatus = Nothing
}
data MarketSubscriptionMessage = MarketSubscriptionMessage
{ marketSubscriptionMessageOp :: !(Maybe Text)
, marketSubscriptionMessageId :: !(Maybe Int)
, marketSubscriptionMessageSegmentationEnabled :: !(Maybe Bool)
, marketSubscriptionMessageClk :: !(Maybe Text)
, marketSubscriptionMessageHeartbeatMs :: !(Maybe Integer)
, marketSubscriptionMessageInitialClk :: !(Maybe Text)
, marketSubscriptionMessageMarketFilter :: !(Maybe MarketFilter)
, marketSubscriptionMessageConflateMs :: !(Maybe Integer)
, marketSubscriptionMessageMarketDataFilter :: !(Maybe MarketDataFilter)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON MarketSubscriptionMessage where
parseJSON = A.withObject "MarketSubscriptionMessage" $ \o ->
MarketSubscriptionMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "segmentationEnabled")
<*> (o .:? "clk")
<*> (o .:? "heartbeatMs")
<*> (o .:? "initialClk")
<*> (o .:? "marketFilter")
<*> (o .:? "conflateMs")
<*> (o .:? "marketDataFilter")
instance A.ToJSON MarketSubscriptionMessage where
toJSON MarketSubscriptionMessage {..} =
_omitNulls
[ "op" .= marketSubscriptionMessageOp
, "id" .= marketSubscriptionMessageId
, "segmentationEnabled" .= marketSubscriptionMessageSegmentationEnabled
, "clk" .= marketSubscriptionMessageClk
, "heartbeatMs" .= marketSubscriptionMessageHeartbeatMs
, "initialClk" .= marketSubscriptionMessageInitialClk
, "marketFilter" .= marketSubscriptionMessageMarketFilter
, "conflateMs" .= marketSubscriptionMessageConflateMs
, "marketDataFilter" .= marketSubscriptionMessageMarketDataFilter
]
mkMarketSubscriptionMessage
:: MarketSubscriptionMessage
mkMarketSubscriptionMessage =
MarketSubscriptionMessage
{ marketSubscriptionMessageOp = Just "marketSubscription"
, marketSubscriptionMessageId = Nothing
, marketSubscriptionMessageSegmentationEnabled = Nothing
, marketSubscriptionMessageClk = Nothing
, marketSubscriptionMessageHeartbeatMs = Nothing
, marketSubscriptionMessageInitialClk = Nothing
, marketSubscriptionMessageMarketFilter = Nothing
, marketSubscriptionMessageConflateMs = Nothing
, marketSubscriptionMessageMarketDataFilter = Nothing
}
data OrderChangeMessage = OrderChangeMessage
{ orderChangeMessageOp :: !(Maybe Text)
, orderChangeMessageId :: !(Maybe Int)
, orderChangeMessageCt :: !(Maybe E'Ct)
, orderChangeMessageClk :: !(Maybe Text)
, orderChangeMessageHeartbeatMs :: !(Maybe Integer)
, orderChangeMessagePt :: !(Maybe Integer)
, orderChangeMessageOc :: !(Maybe [OrderMarketChange])
, orderChangeMessageInitialClk :: !(Maybe Text)
, orderChangeMessageConflateMs :: !(Maybe Integer)
, orderChangeMessageSegmentType :: !(Maybe E'SegmentType)
, orderChangeMessageStatus :: !(Maybe Int)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON OrderChangeMessage where
parseJSON = A.withObject "OrderChangeMessage" $ \o ->
OrderChangeMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "ct")
<*> (o .:? "clk")
<*> (o .:? "heartbeatMs")
<*> (o .:? "pt")
<*> (o .:? "oc")
<*> (o .:? "initialClk")
<*> (o .:? "conflateMs")
<*> (o .:? "segmentType")
<*> (o .:? "status")
instance A.ToJSON OrderChangeMessage where
toJSON OrderChangeMessage {..} =
_omitNulls
[ "op" .= orderChangeMessageOp
, "id" .= orderChangeMessageId
, "ct" .= orderChangeMessageCt
, "clk" .= orderChangeMessageClk
, "heartbeatMs" .= orderChangeMessageHeartbeatMs
, "pt" .= orderChangeMessagePt
, "oc" .= orderChangeMessageOc
, "initialClk" .= orderChangeMessageInitialClk
, "conflateMs" .= orderChangeMessageConflateMs
, "segmentType" .= orderChangeMessageSegmentType
, "status" .= orderChangeMessageStatus
]
mkOrderChangeMessage
:: OrderChangeMessage
mkOrderChangeMessage =
OrderChangeMessage
{ orderChangeMessageOp = Nothing
, orderChangeMessageId = Nothing
, orderChangeMessageCt = Nothing
, orderChangeMessageClk = Nothing
, orderChangeMessageHeartbeatMs = Nothing
, orderChangeMessagePt = Nothing
, orderChangeMessageOc = Nothing
, orderChangeMessageInitialClk = Nothing
, orderChangeMessageConflateMs = Nothing
, orderChangeMessageSegmentType = Nothing
, orderChangeMessageStatus = Nothing
}
data OrderSubscriptionMessage = OrderSubscriptionMessage
{ orderSubscriptionMessageOp :: !(Maybe Text)
, orderSubscriptionMessageId :: !(Maybe Int)
, orderSubscriptionMessageSegmentationEnabled :: !(Maybe Bool)
, orderSubscriptionMessageOrderFilter :: !(Maybe OrderFilter)
, orderSubscriptionMessageClk :: !(Maybe Text)
, orderSubscriptionMessageHeartbeatMs :: !(Maybe Integer)
, orderSubscriptionMessageInitialClk :: !(Maybe Text)
, orderSubscriptionMessageConflateMs :: !(Maybe Integer)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON OrderSubscriptionMessage where
parseJSON = A.withObject "OrderSubscriptionMessage" $ \o ->
OrderSubscriptionMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "segmentationEnabled")
<*> (o .:? "orderFilter")
<*> (o .:? "clk")
<*> (o .:? "heartbeatMs")
<*> (o .:? "initialClk")
<*> (o .:? "conflateMs")
instance A.ToJSON OrderSubscriptionMessage where
toJSON OrderSubscriptionMessage {..} =
_omitNulls
[ "op" .= orderSubscriptionMessageOp
, "id" .= orderSubscriptionMessageId
, "segmentationEnabled" .= orderSubscriptionMessageSegmentationEnabled
, "orderFilter" .= orderSubscriptionMessageOrderFilter
, "clk" .= orderSubscriptionMessageClk
, "heartbeatMs" .= orderSubscriptionMessageHeartbeatMs
, "initialClk" .= orderSubscriptionMessageInitialClk
, "conflateMs" .= orderSubscriptionMessageConflateMs
]
mkOrderSubscriptionMessage
:: OrderSubscriptionMessage
mkOrderSubscriptionMessage =
OrderSubscriptionMessage
{ orderSubscriptionMessageOp = Just "orderSubscription"
, orderSubscriptionMessageId = Nothing
, orderSubscriptionMessageSegmentationEnabled = Nothing
, orderSubscriptionMessageOrderFilter = Nothing
, orderSubscriptionMessageClk = Nothing
, orderSubscriptionMessageHeartbeatMs = Nothing
, orderSubscriptionMessageInitialClk = Nothing
, orderSubscriptionMessageConflateMs = Nothing
}
data StatusMessage = StatusMessage
{ statusMessageOp :: !(Maybe Text)
, statusMessageId :: !(Maybe Int)
, statusMessageErrorMessage :: !(Maybe Text)
, statusMessageErrorCode :: !(Maybe E'ErrorCode)
, statusMessageConnectionId :: !(Maybe Text)
, statusMessageConnectionClosed :: !(Maybe Bool)
, statusMessageStatusCode :: !(Maybe E'StatusCode)
} deriving (P.Show, P.Eq, P.Typeable)
instance A.FromJSON StatusMessage where
parseJSON = A.withObject "StatusMessage" $ \o ->
StatusMessage
<$> (o .:? "op")
<*> (o .:? "id")
<*> (o .:? "errorMessage")
<*> (o .:? "errorCode")
<*> (o .:? "connectionId")
<*> (o .:? "connectionClosed")
<*> (o .:? "statusCode")
instance A.ToJSON StatusMessage where
toJSON StatusMessage {..} =
_omitNulls
[ "op" .= statusMessageOp
, "id" .= statusMessageId
, "errorMessage" .= statusMessageErrorMessage
, "errorCode" .= statusMessageErrorCode
, "connectionId" .= statusMessageConnectionId
, "connectionClosed" .= statusMessageConnectionClosed
, "statusCode" .= statusMessageStatusCode
]
mkStatusMessage
:: StatusMessage
mkStatusMessage =
StatusMessage
{ statusMessageOp = Nothing
, statusMessageId = Nothing
, statusMessageErrorMessage = Nothing
, statusMessageErrorCode = Nothing
, statusMessageConnectionId = Nothing
, statusMessageConnectionClosed = Nothing
, statusMessageStatusCode = Nothing
}
data E'BettingTypes
= E'BettingTypes'ODDS
| E'BettingTypes'LINE
| E'BettingTypes'RANGE
| E'BettingTypes'ASIAN_HANDICAP_DOUBLE_LINE
| E'BettingTypes'ASIAN_HANDICAP_SINGLE_LINE
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'BettingTypes where toJSON = A.toJSON . fromE'BettingTypes
instance A.FromJSON E'BettingTypes where parseJSON o = P.either P.fail (pure . P.id) . toE'BettingTypes =<< A.parseJSON o
fromE'BettingTypes :: E'BettingTypes -> Text
fromE'BettingTypes = \case
E'BettingTypes'ODDS -> "ODDS"
E'BettingTypes'LINE -> "LINE"
E'BettingTypes'RANGE -> "RANGE"
E'BettingTypes'ASIAN_HANDICAP_DOUBLE_LINE -> "ASIAN_HANDICAP_DOUBLE_LINE"
E'BettingTypes'ASIAN_HANDICAP_SINGLE_LINE -> "ASIAN_HANDICAP_SINGLE_LINE"
toE'BettingTypes :: Text -> P.Either String E'BettingTypes
toE'BettingTypes = \case
"ODDS" -> P.Right E'BettingTypes'ODDS
"LINE" -> P.Right E'BettingTypes'LINE
"RANGE" -> P.Right E'BettingTypes'RANGE
"ASIAN_HANDICAP_DOUBLE_LINE" -> P.Right E'BettingTypes'ASIAN_HANDICAP_DOUBLE_LINE
"ASIAN_HANDICAP_SINGLE_LINE" -> P.Right E'BettingTypes'ASIAN_HANDICAP_SINGLE_LINE
s -> P.Left $ "toE'BettingTypes: enum parse failure: " P.++ P.show s
data E'Ct
= E'Ct'SUB_IMAGE
| E'Ct'RESUB_DELTA
| E'Ct'HEARTBEAT
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Ct where toJSON = A.toJSON . fromE'Ct
instance A.FromJSON E'Ct where parseJSON o = P.either P.fail (pure . P.id) . toE'Ct =<< A.parseJSON o
fromE'Ct :: E'Ct -> Text
fromE'Ct = \case
E'Ct'SUB_IMAGE -> "SUB_IMAGE"
E'Ct'RESUB_DELTA -> "RESUB_DELTA"
E'Ct'HEARTBEAT -> "HEARTBEAT"
toE'Ct :: Text -> P.Either String E'Ct
toE'Ct = \case
"SUB_IMAGE" -> P.Right E'Ct'SUB_IMAGE
"RESUB_DELTA" -> P.Right E'Ct'RESUB_DELTA
"HEARTBEAT" -> P.Right E'Ct'HEARTBEAT
s -> P.Left $ "toE'Ct: enum parse failure: " P.++ P.show s
data E'ErrorCode
= E'ErrorCode'NO_APP_KEY
| E'ErrorCode'INVALID_APP_KEY
| E'ErrorCode'NO_SESSION
| E'ErrorCode'INVALID_SESSION_INFORMATION
| E'ErrorCode'NOT_AUTHORIZED
| E'ErrorCode'INVALID_INPUT
| E'ErrorCode'INVALID_CLOCK
| E'ErrorCode'UNEXPECTED_ERROR
| E'ErrorCode'TIMEOUT
| E'ErrorCode'SUBSCRIPTION_LIMIT_EXCEEDED
| E'ErrorCode'INVALID_REQUEST
| E'ErrorCode'CONNECTION_FAILED
| E'ErrorCode'MAX_CONNECTION_LIMIT_EXCEEDED
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'ErrorCode where toJSON = A.toJSON . fromE'ErrorCode
instance A.FromJSON E'ErrorCode where parseJSON o = P.either P.fail (pure . P.id) . toE'ErrorCode =<< A.parseJSON o
fromE'ErrorCode :: E'ErrorCode -> Text
fromE'ErrorCode = \case
E'ErrorCode'NO_APP_KEY -> "NO_APP_KEY"
E'ErrorCode'INVALID_APP_KEY -> "INVALID_APP_KEY"
E'ErrorCode'NO_SESSION -> "NO_SESSION"
E'ErrorCode'INVALID_SESSION_INFORMATION -> "INVALID_SESSION_INFORMATION"
E'ErrorCode'NOT_AUTHORIZED -> "NOT_AUTHORIZED"
E'ErrorCode'INVALID_INPUT -> "INVALID_INPUT"
E'ErrorCode'INVALID_CLOCK -> "INVALID_CLOCK"
E'ErrorCode'UNEXPECTED_ERROR -> "UNEXPECTED_ERROR"
E'ErrorCode'TIMEOUT -> "TIMEOUT"
E'ErrorCode'SUBSCRIPTION_LIMIT_EXCEEDED -> "SUBSCRIPTION_LIMIT_EXCEEDED"
E'ErrorCode'INVALID_REQUEST -> "INVALID_REQUEST"
E'ErrorCode'CONNECTION_FAILED -> "CONNECTION_FAILED"
E'ErrorCode'MAX_CONNECTION_LIMIT_EXCEEDED -> "MAX_CONNECTION_LIMIT_EXCEEDED"
toE'ErrorCode :: Text -> P.Either String E'ErrorCode
toE'ErrorCode = \case
"NO_APP_KEY" -> P.Right E'ErrorCode'NO_APP_KEY
"INVALID_APP_KEY" -> P.Right E'ErrorCode'INVALID_APP_KEY
"NO_SESSION" -> P.Right E'ErrorCode'NO_SESSION
"INVALID_SESSION_INFORMATION" -> P.Right E'ErrorCode'INVALID_SESSION_INFORMATION
"NOT_AUTHORIZED" -> P.Right E'ErrorCode'NOT_AUTHORIZED
"INVALID_INPUT" -> P.Right E'ErrorCode'INVALID_INPUT
"INVALID_CLOCK" -> P.Right E'ErrorCode'INVALID_CLOCK
"UNEXPECTED_ERROR" -> P.Right E'ErrorCode'UNEXPECTED_ERROR
"TIMEOUT" -> P.Right E'ErrorCode'TIMEOUT
"SUBSCRIPTION_LIMIT_EXCEEDED" -> P.Right E'ErrorCode'SUBSCRIPTION_LIMIT_EXCEEDED
"INVALID_REQUEST" -> P.Right E'ErrorCode'INVALID_REQUEST
"CONNECTION_FAILED" -> P.Right E'ErrorCode'CONNECTION_FAILED
"MAX_CONNECTION_LIMIT_EXCEEDED" -> P.Right E'ErrorCode'MAX_CONNECTION_LIMIT_EXCEEDED
s -> P.Left $ "toE'ErrorCode: enum parse failure: " P.++ P.show s
data E'Fields
= E'Fields'EX_BEST_OFFERS_DISP
| E'Fields'EX_BEST_OFFERS
| E'Fields'EX_ALL_OFFERS
| E'Fields'EX_TRADED
| E'Fields'EX_TRADED_VOL
| E'Fields'EX_LTP
| E'Fields'EX_MARKET_DEF
| E'Fields'SP_TRADED
| E'Fields'SP_PROJECTED
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Fields where toJSON = A.toJSON . fromE'Fields
instance A.FromJSON E'Fields where parseJSON o = P.either P.fail (pure . P.id) . toE'Fields =<< A.parseJSON o
fromE'Fields :: E'Fields -> Text
fromE'Fields = \case
E'Fields'EX_BEST_OFFERS_DISP -> "EX_BEST_OFFERS_DISP"
E'Fields'EX_BEST_OFFERS -> "EX_BEST_OFFERS"
E'Fields'EX_ALL_OFFERS -> "EX_ALL_OFFERS"
E'Fields'EX_TRADED -> "EX_TRADED"
E'Fields'EX_TRADED_VOL -> "EX_TRADED_VOL"
E'Fields'EX_LTP -> "EX_LTP"
E'Fields'EX_MARKET_DEF -> "EX_MARKET_DEF"
E'Fields'SP_TRADED -> "SP_TRADED"
E'Fields'SP_PROJECTED -> "SP_PROJECTED"
toE'Fields :: Text -> P.Either String E'Fields
toE'Fields = \case
"EX_BEST_OFFERS_DISP" -> P.Right E'Fields'EX_BEST_OFFERS_DISP
"EX_BEST_OFFERS" -> P.Right E'Fields'EX_BEST_OFFERS
"EX_ALL_OFFERS" -> P.Right E'Fields'EX_ALL_OFFERS
"EX_TRADED" -> P.Right E'Fields'EX_TRADED
"EX_TRADED_VOL" -> P.Right E'Fields'EX_TRADED_VOL
"EX_LTP" -> P.Right E'Fields'EX_LTP
"EX_MARKET_DEF" -> P.Right E'Fields'EX_MARKET_DEF
"SP_TRADED" -> P.Right E'Fields'SP_TRADED
"SP_PROJECTED" -> P.Right E'Fields'SP_PROJECTED
s -> P.Left $ "toE'Fields: enum parse failure: " P.++ P.show s
data E'OpTypes
= E'OpTypes'Heartbeat
| E'OpTypes'Authentication
| E'OpTypes'MarketSubscription
| E'OpTypes'OrderSubscription
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'OpTypes where toJSON = A.toJSON . fromE'OpTypes
instance A.FromJSON E'OpTypes where parseJSON o = P.either P.fail (pure . P.id) . toE'OpTypes =<< A.parseJSON o
fromE'OpTypes :: E'OpTypes -> Text
fromE'OpTypes = \case
E'OpTypes'Heartbeat -> "heartbeat"
E'OpTypes'Authentication -> "authentication"
E'OpTypes'MarketSubscription -> "marketSubscription"
E'OpTypes'OrderSubscription -> "orderSubscription"
toE'OpTypes :: Text -> P.Either String E'OpTypes
toE'OpTypes = \case
"heartbeat" -> P.Right E'OpTypes'Heartbeat
"authentication" -> P.Right E'OpTypes'Authentication
"marketSubscription" -> P.Right E'OpTypes'MarketSubscription
"orderSubscription" -> P.Right E'OpTypes'OrderSubscription
s -> P.Left $ "toE'OpTypes: enum parse failure: " P.++ P.show s
data E'OpTypes2
= E'OpTypes2'Connection
| E'OpTypes2'Status
| E'OpTypes2'Mcm
| E'OpTypes2'Ocm
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'OpTypes2 where toJSON = A.toJSON . fromE'OpTypes2
instance A.FromJSON E'OpTypes2 where parseJSON o = P.either P.fail (pure . P.id) . toE'OpTypes2 =<< A.parseJSON o
fromE'OpTypes2 :: E'OpTypes2 -> Text
fromE'OpTypes2 = \case
E'OpTypes2'Connection -> "connection"
E'OpTypes2'Status -> "status"
E'OpTypes2'Mcm -> "mcm"
E'OpTypes2'Ocm -> "ocm"
toE'OpTypes2 :: Text -> P.Either String E'OpTypes2
toE'OpTypes2 = \case
"connection" -> P.Right E'OpTypes2'Connection
"status" -> P.Right E'OpTypes2'Status
"mcm" -> P.Right E'OpTypes2'Mcm
"ocm" -> P.Right E'OpTypes2'Ocm
s -> P.Left $ "toE'OpTypes2: enum parse failure: " P.++ P.show s
data E'Ot
= E'Ot'L
| E'Ot'LOC
| E'Ot'MOC
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Ot where toJSON = A.toJSON . fromE'Ot
instance A.FromJSON E'Ot where parseJSON o = P.either P.fail (pure . P.id) . toE'Ot =<< A.parseJSON o
fromE'Ot :: E'Ot -> Text
fromE'Ot = \case
E'Ot'L -> "L"
E'Ot'LOC -> "LOC"
E'Ot'MOC -> "MOC"
toE'Ot :: Text -> P.Either String E'Ot
toE'Ot = \case
"L" -> P.Right E'Ot'L
"LOC" -> P.Right E'Ot'LOC
"MOC" -> P.Right E'Ot'MOC
s -> P.Left $ "toE'Ot: enum parse failure: " P.++ P.show s
data E'Pt
= E'Pt'L
| E'Pt'P
| E'Pt'MOC
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Pt where toJSON = A.toJSON . fromE'Pt
instance A.FromJSON E'Pt where parseJSON o = P.either P.fail (pure . P.id) . toE'Pt =<< A.parseJSON o
fromE'Pt :: E'Pt -> Text
fromE'Pt = \case
E'Pt'L -> "L"
E'Pt'P -> "P"
E'Pt'MOC -> "MOC"
toE'Pt :: Text -> P.Either String E'Pt
toE'Pt = \case
"L" -> P.Right E'Pt'L
"P" -> P.Right E'Pt'P
"MOC" -> P.Right E'Pt'MOC
s -> P.Left $ "toE'Pt: enum parse failure: " P.++ P.show s
data E'SegmentType
= E'SegmentType'SEG_START
| E'SegmentType'SEG
| E'SegmentType'SEG_END
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'SegmentType where toJSON = A.toJSON . fromE'SegmentType
instance A.FromJSON E'SegmentType where parseJSON o = P.either P.fail (pure . P.id) . toE'SegmentType =<< A.parseJSON o
fromE'SegmentType :: E'SegmentType -> Text
fromE'SegmentType = \case
E'SegmentType'SEG_START -> "SEG_START"
E'SegmentType'SEG -> "SEG"
E'SegmentType'SEG_END -> "SEG_END"
toE'SegmentType :: Text -> P.Either String E'SegmentType
toE'SegmentType = \case
"SEG_START" -> P.Right E'SegmentType'SEG_START
"SEG" -> P.Right E'SegmentType'SEG
"SEG_END" -> P.Right E'SegmentType'SEG_END
s -> P.Left $ "toE'SegmentType: enum parse failure: " P.++ P.show s
data E'Side
= E'Side'B
| E'Side'L
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Side where toJSON = A.toJSON . fromE'Side
instance A.FromJSON E'Side where parseJSON o = P.either P.fail (pure . P.id) . toE'Side =<< A.parseJSON o
fromE'Side :: E'Side -> Text
fromE'Side = \case
E'Side'B -> "B"
E'Side'L -> "L"
toE'Side :: Text -> P.Either String E'Side
toE'Side = \case
"B" -> P.Right E'Side'B
"L" -> P.Right E'Side'L
s -> P.Left $ "toE'Side: enum parse failure: " P.++ P.show s
data E'Status
= E'Status'INACTIVE
| E'Status'OPEN
| E'Status'SUSPENDED
| E'Status'CLOSED
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Status where toJSON = A.toJSON . fromE'Status
instance A.FromJSON E'Status where parseJSON o = P.either P.fail (pure . P.id) . toE'Status =<< A.parseJSON o
fromE'Status :: E'Status -> Text
fromE'Status = \case
E'Status'INACTIVE -> "INACTIVE"
E'Status'OPEN -> "OPEN"
E'Status'SUSPENDED -> "SUSPENDED"
E'Status'CLOSED -> "CLOSED"
toE'Status :: Text -> P.Either String E'Status
toE'Status = \case
"INACTIVE" -> P.Right E'Status'INACTIVE
"OPEN" -> P.Right E'Status'OPEN
"SUSPENDED" -> P.Right E'Status'SUSPENDED
"CLOSED" -> P.Right E'Status'CLOSED
s -> P.Left $ "toE'Status: enum parse failure: " P.++ P.show s
data E'Status2
= E'Status2'ACTIVE
| E'Status2'WINNER
| E'Status2'LOSER
| E'Status2'REMOVED
| E'Status2'REMOVED_VACANT
| E'Status2'HIDDEN
| E'Status2'PLACED
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Status2 where toJSON = A.toJSON . fromE'Status2
instance A.FromJSON E'Status2 where parseJSON o = P.either P.fail (pure . P.id) . toE'Status2 =<< A.parseJSON o
fromE'Status2 :: E'Status2 -> Text
fromE'Status2 = \case
E'Status2'ACTIVE -> "ACTIVE"
E'Status2'WINNER -> "WINNER"
E'Status2'LOSER -> "LOSER"
E'Status2'REMOVED -> "REMOVED"
E'Status2'REMOVED_VACANT -> "REMOVED_VACANT"
E'Status2'HIDDEN -> "HIDDEN"
E'Status2'PLACED -> "PLACED"
toE'Status2 :: Text -> P.Either String E'Status2
toE'Status2 = \case
"ACTIVE" -> P.Right E'Status2'ACTIVE
"WINNER" -> P.Right E'Status2'WINNER
"LOSER" -> P.Right E'Status2'LOSER
"REMOVED" -> P.Right E'Status2'REMOVED
"REMOVED_VACANT" -> P.Right E'Status2'REMOVED_VACANT
"HIDDEN" -> P.Right E'Status2'HIDDEN
"PLACED" -> P.Right E'Status2'PLACED
s -> P.Left $ "toE'Status2: enum parse failure: " P.++ P.show s
data E'Status3
= E'Status3'E
| E'Status3'EC
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Status3 where toJSON = A.toJSON . fromE'Status3
instance A.FromJSON E'Status3 where parseJSON o = P.either P.fail (pure . P.id) . toE'Status3 =<< A.parseJSON o
fromE'Status3 :: E'Status3 -> Text
fromE'Status3 = \case
E'Status3'E -> "E"
E'Status3'EC -> "EC"
toE'Status3 :: Text -> P.Either String E'Status3
toE'Status3 = \case
"E" -> P.Right E'Status3'E
"EC" -> P.Right E'Status3'EC
s -> P.Left $ "toE'Status3: enum parse failure: " P.++ P.show s
data E'StatusCode
= E'StatusCode'SUCCESS
| E'StatusCode'FAILURE
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'StatusCode where toJSON = A.toJSON . fromE'StatusCode
instance A.FromJSON E'StatusCode where parseJSON o = P.either P.fail (pure . P.id) . toE'StatusCode =<< A.parseJSON o
fromE'StatusCode :: E'StatusCode -> Text
fromE'StatusCode = \case
E'StatusCode'SUCCESS -> "SUCCESS"
E'StatusCode'FAILURE -> "FAILURE"
toE'StatusCode :: Text -> P.Either String E'StatusCode
toE'StatusCode = \case
"SUCCESS" -> P.Right E'StatusCode'SUCCESS
"FAILURE" -> P.Right E'StatusCode'FAILURE
s -> P.Left $ "toE'StatusCode: enum parse failure: " P.++ P.show s
data E'Type
= E'Type'CLASSIC
| E'Type'FINEST
| E'Type'LINE_RANGE
deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
instance A.ToJSON E'Type where toJSON = A.toJSON . fromE'Type
instance A.FromJSON E'Type where parseJSON o = P.either P.fail (pure . P.id) . toE'Type =<< A.parseJSON o
fromE'Type :: E'Type -> Text
fromE'Type = \case
E'Type'CLASSIC -> "CLASSIC"
E'Type'FINEST -> "FINEST"
E'Type'LINE_RANGE -> "LINE_RANGE"
toE'Type :: Text -> P.Either String E'Type
toE'Type = \case
"CLASSIC" -> P.Right E'Type'CLASSIC
"FINEST" -> P.Right E'Type'FINEST
"LINE_RANGE" -> P.Right E'Type'LINE_RANGE
s -> P.Left $ "toE'Type: enum parse failure: " P.++ P.show s