packages feed

web3 0.5.4.0 → 0.5.5.0

raw patch · 4 files changed

+36/−29 lines, 4 filesdep ~aesondep ~cryptonitedep ~http-client

Dependency ranges changed: aeson, cryptonite, http-client, http-client-tls, memory, text, vector, web3

Files

src/Network/Ethereum/Web3/Contract.hs view
@@ -43,7 +43,8 @@ import Control.Exception (throwIO) import Data.Text.Lazy (toStrict) import qualified Data.Text as T-import Control.Monad (when)+import Control.Monad (when, forM)+import Control.Monad.Trans.Reader (ReaderT(..)) import Data.Monoid ((<>))  import Network.Ethereum.Web3.Provider@@ -69,7 +70,7 @@     event :: Provider p           => Address           -- ^ Contract address-          -> (a -> Web3 p EventAction)+          -> (a -> ReaderT Change (Web3 p) EventAction)           -- ^ 'Event' handler           -> Web3 p ThreadId           -- ^ 'Web3' wrapped event handler spawn ident@@ -77,7 +78,7 @@  _event :: (Provider p, Event a)        => Address-       -> (a -> Web3 p EventAction)+       -> (a -> ReaderT Change (Web3 p) EventAction)        -> Web3 p ThreadId _event a f = do     fid <- let ftyp = snd $ let x = undefined :: Event a => a@@ -87,16 +88,19 @@     forkWeb3 $         let loop = do liftIO (threadDelay 1000000)                       changes <- eth_getFilterChanges fid-                      acts <- mapM f (mapMaybe parseChange changes)+                      acts <- forM (mapMaybe pairChange changes) $ \(changeEvent, changeWithMeta) ->+                        runReaderT (f changeEvent) changeWithMeta                       when (TerminateEvent `notElem` acts) loop         in do loop               eth_uninstallFilter fid               return ()   where     prepareTopics = fmap (T.drop 2) . drop 1-    parseChange c = fromData $-        T.append (T.concat (prepareTopics $ changeTopics c))-                 (T.drop 2 $ changeData c)+    pairChange changeWithMeta = do+      changeEvent <- fromData $+        T.append (T.concat (prepareTopics $ changeTopics changeWithMeta))+                 (T.drop 2 $ changeData changeWithMeta)+      return (changeEvent, changeWithMeta)  -- | Contract method caller class ABIEncoding a => Method a where
src/Network/Ethereum/Web3/TH.hs view
@@ -169,15 +169,17 @@               [conP funName $ fmap varP vars]               [|ident <> toDataBuilder $(tupE $ fmap varE vars)|] -eventFilterD :: String -> [DecQ]-eventFilterD topic0 = let addr = mkName "a" in-  [ funD' (mkName "eventFilter") [wildP, varP addr]-    [|Filter (Just $(varE addr))-             (Just [Just topic0, Nothing])-             Nothing-             Nothing-     |]-  ]+eventFilterD :: String -> Int -> [DecQ]+eventFilterD topic0 n =+  let addr = mkName "a"+      indexedArgs = replicate n Nothing :: [Maybe String]+  in [ funD' (mkName "eventFilter") [wildP, varP addr]+       [|Filter (Just $(varE addr))+                (Just $ [Just topic0] <> indexedArgs)+                Nothing+                Nothing+       |]+     ]  funWrapper :: Bool            -- ^ Is constant?@@ -227,13 +229,14 @@ mkEvent eve@(DEvent name inputs _) = sequence     [ dataD' eventName eventFields derivingD     , instanceD' eventName encodingT (eventEncodigD eventName inputs)-    , instanceD' eventName eventT    (eventFilterD (T.unpack $ eventId eve))+    , instanceD' eventName eventT    (eventFilterD (T.unpack $ eventId eve) indexedFieldsCount)     ]   where eventName   = mkName (toUpperFirst (T.unpack name))         derivingD   = [mkName "Show", mkName "Eq", mkName "Ord"]         eventFields = normalC eventName (eventBangType <$> inputs)         encodingT   = conT (mkName "ABIEncoding")         eventT      = conT (mkName "Event")+        indexedFieldsCount = length . filter eveArgIndexed $ inputs  -- | Method delcarations maker mkFun :: Declaration -> Q [Dec]
src/Network/Ethereum/Web3/Types.hs view
@@ -65,7 +65,7 @@     { fieldLabelModifier = toLowerFirst . drop 6 }) ''Filter)  -- | Event filder ident-newtype FilterId = FilterId Int+newtype FilterId = FilterId Integer   deriving (Show, Eq, Ord)  instance FromJSON FilterId where
web3.cabal view
@@ -1,5 +1,5 @@ name: web3-version: 0.5.4.0+version: 0.5.5.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -38,16 +38,16 @@         base >4.8 && <4.11,         base16-bytestring >=0.1.1.6 && <0.2,         template-haskell >=2.11.1.0 && <2.12,-        http-client-tls >=0.3.3.1 && <0.4,+        http-client-tls >=0.3.5.1 && <0.4,         transformers >=0.5.2.0 && <0.6,-        http-client >=0.5.5 && <0.6,+        http-client >=0.5.7.0 && <0.6,         attoparsec >=0.13.1.0 && <0.14,         bytestring >=0.10.8.1 && <0.11,-        cryptonite ==0.21.*,-        vector >=0.11.0.0 && <0.12,-        memory >=0.14.1 && <0.15,-        aeson >=1.0.2.1 && <1.1,-        text >=1.2.2.1 && <1.3+        cryptonite ==0.23.*,+        vector >=0.12.0.1 && <0.13,+        memory >=0.14.6 && <0.15,+        aeson >=1.1.2.0 && <1.2,+        text >=1.2.2.2 && <1.3     default-language: Haskell2010     default-extensions: OverloadedStrings     hs-source-dirs: src@@ -62,9 +62,9 @@     main-is: Spec.hs     build-depends:         base >=4.9.1.0 && <4.10,-        memory >=0.14.1 && <0.15,-        text >=1.2.2.1 && <1.3,-        web3 >=0.5.4.0 && <0.6+        memory >=0.14.6 && <0.15,+        text >=1.2.2.2 && <1.3,+        web3     default-language: Haskell2010     default-extensions: OverloadedStrings     hs-source-dirs: test