packages feed

web3 0.3.2.1 → 0.3.3.0

raw patch · 3 files changed

+26/−14 lines, 3 filesdep −binarydep −http-client-tlsdep ~base

Dependencies removed: binary, http-client-tls

Dependency ranges changed: base

Files

src/Network/Ethereum/Web3/JsonRpc.hs view
@@ -16,10 +16,10 @@  import Network.Ethereum.Web3.Types -import Network.HTTP.Client (httpLbs, newManager, requestBody, responseBody,-                            method, requestHeaders, parseRequest,+import Network.HTTP.Client (httpLbs, newManager, defaultManagerSettings,+                            requestBody, responseBody, method,+                            requestHeaders, parseRequest,                             RequestBody(RequestBodyLBS))-import Network.HTTP.Client.TLS (tlsManagerSettings) import Control.Monad.Error.Class (throwError) import Data.ByteString.Lazy (ByteString) import Control.Monad.Trans.Reader (ask)@@ -41,7 +41,7 @@   where connection body = do             conf <- ask             liftIO $ do-                manager <- newManager tlsManagerSettings+                manager <- newManager defaultManagerSettings                 request <- parseRequest (rpcUri conf)                 let request' = request                              { requestBody = RequestBodyLBS body
src/Network/Ethereum/Web3/TH.hs view
@@ -37,7 +37,8 @@ import Network.Ethereum.Web3.JsonAbi import Network.Ethereum.Web3.Types import Data.Text (Text, isPrefixOf)-import Data.Monoid (mconcat)+import Data.List (groupBy, sortBy)+import Data.Monoid (mconcat, (<>)) import Language.Haskell.TH.Quote import Language.Haskell.TH.Lib import Language.Haskell.TH@@ -136,7 +137,7 @@ genABIHeader :: [(Text, Name)] -> [ExpQ] genABIHeader vars = fmap go offsetVars   where offsetVars :: [((Text, Name), Int)]-        offsetVars = zip vars (fmap ((64 *) . (length vars +)) [0..])+        offsetVars = zip vars (fmap ((32 *) . (length vars +)) [0..])         go ((typ, v), o) | isDynType typ = [|toDataBuilder (o :: Int)|]                          | otherwise     = [|toDataBuilder $(varE v)|] @@ -211,7 +212,7 @@  -- | Method delcarations maker mkFun :: Declaration -> Q [Dec]-mkFun fun@(DFunction name constant inputs outputs) =+mkFun fun@(DFunction name constant inputs outputs) = do     sequence $         [ dataD' dataName (normalC dataName bangInput) derivingD         , instanceD' dataName encodingT (funEncodigD dataName inputs mIdent)@@ -220,13 +221,26 @@         , funWrapper constant funName dataName inputs         ]   where mIdent    = T.unpack (methodId fun)-        funName  = mkName (toLowerFirst (T.unpack name))-        dataName = mkName (toUpperFirst (T.unpack name) ++ "Function")+        dataName  = mkName (toUpperFirst (T.unpack $ name <> "Data"))+        funName   = mkName (toLowerFirst (T.unpack name))         bangInput = fmap funBangType inputs         derivingD = [mkName "Show", mkName "Eq", mkName "Ord"]         encodingT = conT (mkName "ABIEncoding")         methodT   = conT (mkName "Method") +escape :: [Declaration] -> [Declaration]+escape = concat . escapeNames . groupBy fnEq . sortBy fnCompare+  where fnEq (DFunction n1 _ _ _) (DFunction n2 _ _ _) = n1 == n2+        fnEq _ _ = False+        fnCompare (DFunction n1 _ _ _) (DFunction n2 _ _ _) = compare n1 n2+        fnCompare _ _ = GT++escapeNames :: [[Declaration]] -> [[Declaration]]+escapeNames = fmap go+  where go (x : xs) = x : zipWith appendToName xs hats+        hats = [T.replicate n "'" | n <- [1..]]+        appendToName dfn addition = dfn { funName = funName dfn <> addition }+ -- | Declaration parser mkDecl :: Declaration -> Q [Dec] mkDecl x@(DFunction{}) = mkFun x@@ -237,7 +251,7 @@ quoteAbiDec :: String -> Q [Dec] quoteAbiDec abi_string =     case decode abi_lbs of-        Just (ContractABI abi) -> concat <$> mapM mkDecl abi+        Just (ContractABI abi) -> concat <$> mapM mkDecl (escape abi)         _ -> fail "Unable to parse ABI!"   where abi_lbs = LT.encodeUtf8 (LT.pack abi_string) 
web3.cabal view
@@ -1,5 +1,5 @@ name:                web3-version:             0.3.2.1+version:             0.3.3.0 synopsis:            Ethereum API for Haskell description:         Web3 is a Haskell client library for Ethereum homepage:            https://github.com/airalab/hs-web3#readme@@ -36,17 +36,15 @@   other-modules:       Network.Ethereum.Web3.JsonRpc                      , Network.Ethereum.Web3.Internal                      , Network.Ethereum.Web3.EncodingUtils-  build-depends:       base >= 4.5 && <4.10+  build-depends:       base >4.8 && <4.10                      , data-default-class                      , base16-bytestring                      , template-haskell-                     , http-client-tls                      , transformers                      , http-client                      , attoparsec                      , bytestring                      , cryptonite-                     , binary                      , vector                      , memory                      , aeson