summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2017-08-10 14:52:04 -0400
committerJoey Hess <joeyh@joeyh.name>2017-08-10 15:46:47 -0400
commita40c18436fb5a58c1636a0980f704ac8e0e2867c (patch)
tree91379ffaa2135f87f415048c9e9e556cb4eff1e0
parent284c623137035d288abc9ab280969f95285f296f (diff)
downloadkeysafe-a40c18436fb5a58c1636a0980f704ac8e0e2867c.tar.gz
updated to http-client 0.5.3, servant 0.11 and stackage lts-9.0
servant broke backwards compatibility; did not try to maintain back-compat (would be possible). New http-client exported some stuff I need; simplified code; did not try to maintain back-compat, although it would not be hard. Test suite passes. This commit was sponsored by Øyvind Andersen Holm.
-rw-r--r--CmdLine.hs1
-rw-r--r--HTTP/Client.hs25
-rw-r--r--keysafe.cabal16
-rw-r--r--stack.yaml17
4 files changed, 22 insertions, 37 deletions
diff --git a/CmdLine.hs b/CmdLine.hs
index 3ba4e23..0f89fe4 100644
--- a/CmdLine.hs
+++ b/CmdLine.hs
@@ -14,6 +14,7 @@ import Storage.Network
import Tunables
import qualified Gpg
import Options.Applicative
+import Data.Monoid
import qualified Data.ByteString.UTF8 as BU8
import qualified Data.Text as T
import System.Directory
diff --git a/HTTP/Client.hs b/HTTP/Client.hs
index 25ff536..9626eab 100644
--- a/HTTP/Client.hs
+++ b/HTTP/Client.hs
@@ -15,11 +15,8 @@ import Servant.API
import Servant.Client
import Data.Proxy
import Network.HTTP.Client hiding (port, host, Proxy)
-import Network.HTTP.Client.Internal (Connection, makeConnection)
-import Control.Monad.Trans.Except (ExceptT, runExceptT)
+import Network.HTTP.Client.Internal (Connection)
import Control.Exception
-import qualified Network.Socket
-import Network.Socket.ByteString (sendAll, recv)
import Network.Socks5
import qualified Data.ByteString.UTF8 as BU8
import Data.List
@@ -28,10 +25,10 @@ import Data.Char
httpAPI :: Proxy HttpAPI
httpAPI = Proxy
-motd :: Manager -> BaseUrl -> ClientM Motd
-getObject :: StorableObjectIdent -> Maybe ProofOfWork -> Manager -> BaseUrl -> ClientM (POWGuarded StorableObject)
-putObject :: StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> Manager -> BaseUrl -> ClientM (POWGuarded StoreResult)
-countObjects :: Maybe ProofOfWork -> Manager -> BaseUrl -> ClientM (POWGuarded CountResult)
+motd :: ClientM Motd
+getObject :: StorableObjectIdent -> Maybe ProofOfWork -> ClientM (POWGuarded StorableObject)
+putObject :: StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> ClientM (POWGuarded StoreResult)
+countObjects :: Maybe ProofOfWork -> ClientM (POWGuarded CountResult)
motd :<|> getObject :<|> putObject :<|> countObjects = client httpAPI
tryA :: IO a -> IO (Either SomeException a)
@@ -43,7 +40,7 @@ serverRequest
-> (String -> a)
-> (r -> a)
-> p
- -> (Maybe ProofOfWork -> Manager -> BaseUrl -> ExceptT ServantError IO (POWGuarded r))
+ -> (Maybe ProofOfWork -> ClientM (POWGuarded r))
-> IO a
serverRequest srv onerr onsuccess p a = do
r <- tryA $ go Nothing maxProofOfWork
@@ -69,7 +66,7 @@ serverRequest srv onerr onsuccess p a = do
-- comparing IP addresses (which are masked somewhat by using tor).
serverRequest'
:: Server
- -> (Manager -> BaseUrl -> ExceptT ServantError IO r)
+ -> (ClientM r)
-> IO (Either String r)
serverRequest' srv a = go Nothing (serverUrls srv)
where
@@ -77,7 +74,7 @@ serverRequest' srv a = go Nothing (serverUrls srv)
maybe "no known address" (\err -> "server failure: " ++ show err) lasterr
go _ (url:urls) = do
manager <- torableManager
- res <- runExceptT $ a manager url
+ res <- runClientM a (ClientEnv manager url)
case res of
Left err -> go (Just err) urls
Right r -> return (Right r)
@@ -104,12 +101,6 @@ torConnection onionaddress p = do
socksdomain = SocksAddrDomainName (BU8.fromString onionaddress)
socksaddr = SocksAddress socksdomain (fromIntegral p)
-socketConnection :: Network.Socket.Socket -> Int -> IO Connection
-socketConnection socket chunksize = makeConnection
- (recv socket chunksize)
- (sendAll socket)
- (Network.Socket.close socket)
-
serverUrls :: Server -> [BaseUrl]
serverUrls srv = map go (serverAddress srv)
where
diff --git a/keysafe.cabal b/keysafe.cabal
index 99330e4..dd574bc 100644
--- a/keysafe.cabal
+++ b/keysafe.cabal
@@ -51,18 +51,18 @@ Executable keysafe
, unix == 2.7.*
, filepath == 1.4.*
, split == 0.2.*
- , directory == 1.2.*
+ , directory (>= 1.2 && < 1.4)
, process (>= 1.2 && < 1.5)
- , optparse-applicative == 0.12.*
+ , optparse-applicative (>= 0.12 && < 0.14)
, readline == 1.0.*
, zxcvbn-c == 1.0.*
- , servant (>= 0.7 && < 0.9)
- , servant-server (>= 0.7 && < 0.9)
- , servant-client (>= 0.7 && < 0.9)
- , aeson == 0.11.*
+ , servant (>= 0.7 && < 0.12)
+ , servant-server (>= 0.7 && < 0.12)
+ , servant-client (>= 0.7 && < 0.12)
+ , aeson (>= 0.11 && < 1.2)
, wai == 3.2.*
, warp == 3.2.*
- , http-client == 0.4.*
+ , http-client (>= 0.5.3 && < 0.6)
, transformers (>= 0.4 && < 0.6)
, stm == 2.4.*
, socks == 0.5.*
@@ -78,7 +78,7 @@ Executable keysafe
, unix-compat == 0.4.*
, exceptions == 0.8.*
, random-shuffle == 0.0.*
- , MonadRandom == 0.4.*
+ , MonadRandom (>= 0.4 && < 0.6)
Other-Modules:
AutoStart
BackupLog
diff --git a/stack.yaml b/stack.yaml
index 0deb662..6704d6b 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,16 +1,9 @@
packages:
- '.'
-resolver: lts-6.12
+resolver: lts-9.0
extra-deps:
- - secret-sharing-1.0.0.3
- - dice-entropy-conduit-1.0.0.1
- - polynomial-0.7.2
- - finite-field-0.8.0
- - raaz-0.1.1
- - zxcvbn-c-1.0.0
- - servant-0.7.1
- - servant-server-0.7.1
- - servant-client-0.7.1
- - token-bucket-0.1.0.1
- - argon2-1.2.0
+- argon2-1.2.0
+- secret-sharing-1.0.0.3
+- dice-entropy-conduit-1.0.0.1
+- polynomial-0.7.3
explicit-setup-deps: