packages feed

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