coinbase-exchange 0.2.0.0 → 0.2.0.1
raw patch · 2 files changed
+20/−2 lines, 2 filesdep +exceptionsPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: exceptions
API changes (from Hackage documentation)
+ Coinbase.Exchange.Types: instance Data.Data.Data Coinbase.Exchange.Types.ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Exception.Exception Coinbase.Exchange.Types.ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Constructor Coinbase.Exchange.Types.C1_0ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Constructor Coinbase.Exchange.Types.C1_1ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Constructor Coinbase.Exchange.Types.C1_2ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Constructor Coinbase.Exchange.Types.C1_3ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Datatype Coinbase.Exchange.Types.D1ExchangeFailure
+ Coinbase.Exchange.Types: instance GHC.Generics.Generic Coinbase.Exchange.Types.ExchangeFailure
Files
coinbase-exchange.cabal view
@@ -1,5 +1,5 @@ name: coinbase-exchange-version: 0.2.0.0+version: 0.2.0.1 synopsis: Connector library for the coinbase exchange. description: Access library for the coinbase exchange. Allows the use of both the public market data API as well as the private@@ -53,6 +53,7 @@ , wuss , cryptohash , byteable+ , exceptions , old-locale
src/Coinbase/Exchange/Types.hs view
@@ -1,4 +1,6 @@+{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -39,12 +41,15 @@ import Control.Applicative import Control.Monad.Base+import Control.Monad.Catch import Control.Monad.Except import Control.Monad.Reader import Control.Monad.Trans.Resource import Data.ByteString import qualified Data.ByteString.Base64 as Base64+import Data.Data import Data.Text (Text)+import GHC.Generics import Network.HTTP.Conduit -- API URLs@@ -101,8 +106,10 @@ | ApiFailure Text | AuthenticationRequiredFailure Text | AuthenticationRequiresByteStrings- deriving (Show)+ deriving (Show, Data, Typeable, Generic) +instance Exception ExchangeFailure+ type Exchange a = ExchangeT IO a newtype ExchangeT m a = ExchangeT { unExchangeT :: ResourceT (ReaderT ExchangeConf (ExceptT ExchangeFailure m)) a }@@ -119,6 +126,16 @@ runExchangeT :: MonadBaseControl IO m => ExchangeConf -> ExchangeT m a -> m (Either ExchangeFailure a) runExchangeT conf = runExceptT . flip runReaderT conf . runResourceT . unExchangeT++execExchange :: ExchangeConf -> Exchange a -> IO a+execExchange = execExchangeT++execExchangeT :: (MonadThrow m, MonadBaseControl IO m) => ExchangeConf -> ExchangeT m a -> m a+execExchangeT conf act = do+ v <- runExceptT . flip runReaderT conf . runResourceT . unExchangeT $ act+ case v of+ Left er -> throwM er+ Right v -> return v -- Utils