summaryrefslogtreecommitdiffhomepage
path: root/HTTP/Client.hs
diff options
context:
space:
mode:
Diffstat (limited to 'HTTP/Client.hs')
-rw-r--r--HTTP/Client.hs25
1 files changed, 8 insertions, 17 deletions
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