web3 0.5.0.0 → 0.5.1.0
raw patch · 9 files changed
+59/−36 lines, 9 filesdep ~web3PVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: web3
API changes (from Hackage documentation)
- Network.Ethereum.Web3.Types: class Provider a where runWeb3' = liftIO . try . unWeb3 forkWeb3 = Web3 . forkIO . unWeb3
- Network.Ethereum.Web3.Types: data DefaultProvider
- Network.Ethereum.Web3.Types: forkWeb3 :: Provider a => Web3 a () -> Web3 a ThreadId
- Network.Ethereum.Web3.Types: instance Network.Ethereum.Web3.Types.Provider Network.Ethereum.Web3.Types.DefaultProvider
- Network.Ethereum.Web3.Types: rpcUri :: Provider a => Web3 a String
- Network.Ethereum.Web3.Types: runWeb3 :: MonadIO m => Web3 DefaultProvider b -> m (Either Web3Error b)
- Network.Ethereum.Web3.Types: runWeb3' :: (Provider a, MonadIO m) => Web3 a b -> m (Either Web3Error b)
+ Network.Ethereum.Web3.Provider: class Provider a
+ Network.Ethereum.Web3.Provider: data DefaultProvider
+ Network.Ethereum.Web3.Provider: forkWeb3 :: Web3 a () -> Web3 a ThreadId
+ Network.Ethereum.Web3.Provider: instance Network.Ethereum.Web3.Provider.Provider Network.Ethereum.Web3.Provider.DefaultProvider
+ Network.Ethereum.Web3.Provider: rpcUri :: Provider a => Web3 a String
+ Network.Ethereum.Web3.Provider: runWeb3 :: MonadIO m => Web3 DefaultProvider b -> m (Either Web3Error b)
+ Network.Ethereum.Web3.Provider: runWeb3' :: MonadIO m => Web3 a b -> m (Either Web3Error b)
- Network.Ethereum.Web3: class Provider a where runWeb3' = liftIO . try . unWeb3 forkWeb3 = Web3 . forkIO . unWeb3
+ Network.Ethereum.Web3: class Provider a
- Network.Ethereum.Web3: forkWeb3 :: Provider a => Web3 a () -> Web3 a ThreadId
+ Network.Ethereum.Web3: forkWeb3 :: Web3 a () -> Web3 a ThreadId
- Network.Ethereum.Web3: runWeb3' :: (Provider a, MonadIO m) => Web3 a b -> m (Either Web3Error b)
+ Network.Ethereum.Web3: runWeb3' :: MonadIO m => Web3 a b -> m (Either Web3Error b)
Files
- src/Network/Ethereum/Unit.hs +2/−4
- src/Network/Ethereum/Web3.hs +3/−0
- src/Network/Ethereum/Web3/Api.hs +1/−0
- src/Network/Ethereum/Web3/Contract.hs +3/−1
- src/Network/Ethereum/Web3/JsonRpc.hs +1/−0
- src/Network/Ethereum/Web3/Provider.hs +43/−0
- src/Network/Ethereum/Web3/TH.hs +1/−0
- src/Network/Ethereum/Web3/Types.hs +2/−29
- web3.cabal +3/−2
src/Network/Ethereum/Unit.hs view
@@ -54,12 +54,11 @@ , KEther ) where -import Data.Text.Lazy.Builder (toLazyText)-import Data.Text.Lazy.Builder.RealFloat import Text.ParserCombinators.ReadPrec import Data.Text.Lazy (Text, unpack) import qualified Text.Read.Lex as L import Data.Monoid ((<>))+import Text.Printf import GHC.Read -- | Ethereum value unit@@ -110,9 +109,8 @@ fromRational = mkValue instance UnitSpec a => Show (Value a) where- show val = unpack (toLazyText floatValue <> " " <> name val)+ show val = printf "%F %s" (x / d :: Double) (name val) where- floatValue = formatRealFloat Fixed (Just 2) (x / d) x = fromIntegral (unValue val) d = divider val
src/Network/Ethereum/Web3.hs view
@@ -22,6 +22,8 @@ , Provider(..) , DefaultProvider , Web3Error(..)+ , forkWeb3+ , runWeb3' , runWeb3 -- ** Contract actions , EventAction(..)@@ -40,6 +42,7 @@ import Network.Ethereum.Web3.Encoding.Tuple import Network.Ethereum.Web3.Contract import Network.Ethereum.Web3.Encoding+import Network.Ethereum.Web3.Provider import Network.Ethereum.Web3.Address import Network.Ethereum.Web3.Types import Network.Ethereum.Unit
src/Network/Ethereum/Web3/Api.hs view
@@ -11,6 +11,7 @@ -- module Network.Ethereum.Web3.Api where +import Network.Ethereum.Web3.Provider import Network.Ethereum.Web3.Address import Network.Ethereum.Web3.JsonRpc import Network.Ethereum.Web3.Types
src/Network/Ethereum/Web3/Contract.hs view
@@ -36,11 +36,13 @@ import qualified Data.Text.Lazy.Builder as B import Control.Concurrent (ThreadId, threadDelay) import Control.Monad.IO.Class (liftIO)+import Control.Exception (throwIO) import Data.Text.Lazy (toStrict) import qualified Data.Text as T import Data.Maybe (catMaybes) import Data.Monoid ((<>)) +import Network.Ethereum.Web3.Provider import Network.Ethereum.Web3.Encoding import Network.Ethereum.Web3.Address import Network.Ethereum.Web3.Types@@ -133,7 +135,7 @@ _call to mode dat = do res <- eth_call txdata mode case fromData (T.drop 2 res) of- Nothing -> fail $+ Nothing -> liftIO $ throwIO $ ParserFail $ "Unable to parse result on `" ++ T.unpack res ++ "` from `" ++ show to ++ "`" Just x -> return x
src/Network/Ethereum/Web3/JsonRpc.hs view
@@ -18,6 +18,7 @@ , ServerUri ) where +import Network.Ethereum.Web3.Provider import Network.Ethereum.Web3.Types import Network.HTTP.Client (httpLbs, newManager, requestBody,
+ src/Network/Ethereum/Web3/Provider.hs view
@@ -0,0 +1,43 @@+-- |+-- Module : Network.Ethereum.Web3.Provider+-- Copyright : Alexander Krupenkin 2016+-- License : BSD3+--+-- Maintainer : mail@akru.me+-- Stability : experimental+-- Portability : portable+--+-- Web3 service provider.+--+module Network.Ethereum.Web3.Provider where++import Control.Concurrent (forkIO, ThreadId)+import Control.Monad.IO.Class (MonadIO(..))+import Network.Ethereum.Web3.Types+import Control.Exception (try)++-- | Ethereum node service provider+class Provider a where+ -- | JSON-RPC provider URI, default: localhost:8545+ rpcUri :: Web3 a String++-- | Default 'Web3' service provider+data DefaultProvider++instance Provider DefaultProvider where+ rpcUri = return "http://localhost:8545"++-- | 'Web3' monad runner+runWeb3' :: MonadIO m => Web3 a b -> m (Either Web3Error b)+{-# INLINE runWeb3' #-}+runWeb3' = liftIO . try . unWeb3++-- | 'Web3' runner for default provider+runWeb3 :: MonadIO m => Web3 DefaultProvider b -> m (Either Web3Error b)+{-# INLINE runWeb3 #-}+runWeb3 = runWeb3'++-- | Fork 'Web3' with the same 'Provider'+forkWeb3 :: Web3 a () -> Web3 a ThreadId+{-# INLINE forkWeb3 #-}+forkWeb3 = Web3 . forkIO . unWeb3
src/Network/Ethereum/Web3/TH.hs view
@@ -44,6 +44,7 @@ import Network.Ethereum.Web3.Address (Address) import Network.Ethereum.Web3.Encoding.Tuple import Network.Ethereum.Web3.Encoding+import Network.Ethereum.Web3.Provider import Network.Ethereum.Web3.Internal import Network.Ethereum.Web3.Contract import Network.Ethereum.Web3.JsonAbi
src/Network/Ethereum/Web3/Types.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE TemplateHaskell #-} -- | -- Module : Network.Ethereum.Web3.Types@@ -20,9 +19,8 @@ import qualified Data.Text.Lazy.Builder as B import qualified Data.Text.Read as R import Network.Ethereum.Web3.Address (Address)-import Control.Monad.IO.Class (MonadIO(..))-import Control.Concurrent (forkIO, ThreadId)-import Control.Exception (Exception, try)+import Control.Monad.IO.Class (MonadIO)+import Control.Exception (Exception) import Data.Typeable (Typeable) import Data.Monoid ((<>)) import Data.Text (Text)@@ -32,31 +30,6 @@ -- | Any communication with Ethereum node wrapped with 'Web3' monad newtype Web3 a b = Web3 { unWeb3 :: IO b } deriving (Functor, Applicative, Monad, MonadIO)---- | Ethereum node service provider-class Provider a where- -- | JSON-RPC provider URI, default: localhost:8545- rpcUri :: Web3 a String-- -- | 'Web3' monad runner- runWeb3' :: MonadIO m => Web3 a b -> m (Either Web3Error b)- {-# INLINE runWeb3' #-}- runWeb3' = liftIO . try . unWeb3-- -- | Fork 'Web3' with the same 'Provider'- forkWeb3 :: Web3 a () -> Web3 a ThreadId- {-# INLINE forkWeb3 #-}- forkWeb3 = Web3 . forkIO . unWeb3---- | Default 'Web3' service provider-data DefaultProvider-instance Provider DefaultProvider where- rpcUri = return "http://localhost:8545"---- | 'Web3' runner for default provider-runWeb3 :: MonadIO m => Web3 DefaultProvider b -> m (Either Web3Error b)-{-# INLINE runWeb3 #-}-runWeb3 = runWeb3' -- | Some peace of error response data Web3Error
web3.cabal view
@@ -1,5 +1,5 @@ name: web3-version: 0.5.0.0+version: 0.5.1.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -29,6 +29,7 @@ Network.Ethereum.Web3.Types Network.Ethereum.Web3.Address Network.Ethereum.Web3.JsonAbi+ Network.Ethereum.Web3.Provider Network.Ethereum.Web3.Encoding Network.Ethereum.Web3.Contract Network.Ethereum.Web3.Encoding.Bytes@@ -63,7 +64,7 @@ base >=4.9.0.0 && <4.10, memory ==0.13.*, text >=1.2.2.1 && <1.3,- web3 >=0.5.0.0 && <0.6+ web3 >=0.5.1.0 && <0.6 default-language: Haskell2010 default-extensions: OverloadedStrings hs-source-dirs: test