gdax-0.5.0.0: lib/Network/GDAX/Feed.hs
module Network.GDAX.Feed where
import Control.Monad.Catch
import qualified Data.Aeson as Aeson
import qualified Data.Text as T
import Network.GDAX.Exceptions
import Network.GDAX.Types.Feed
import Network.WebSockets
defaultClient :: Subscriptions -> (GdaxMessage -> IO b) -> Connection -> IO b
defaultClient subs handler conn = do
sendTextData conn (Aeson.encode (Subscribe subs))
loop
where
loop = do
res <- receiveData conn
let asSum = Aeson.eitherDecode res :: Either String GdaxMessage
case asSum of
Left er -> throwM $ MalformedGdaxResponse $ T.pack er
Right v -> handler v