skylark-client 0.1.1 → 0.1.2
raw patch · 3 files changed
+23/−22 lines, 3 filesdep −resourcet
Dependencies removed: resourcet
Files
- main/skylark-client.hs +1/−1
- skylark-client.cabal +1/−2
- src/Network/Skylark/Client.hs +21/−19
main/skylark-client.hs view
@@ -18,4 +18,4 @@ main :: IO () main = do args <- getRecord "Skylark Client"- runResourceT $ runSkylark (url args) (device args) (sourceHandle stdin) (sinkHandle stdout)+ runSkylark (url args) (device args) (sourceHandle stdin) (sinkHandle stdout)
skylark-client.cabal view
@@ -1,5 +1,5 @@ name: skylark-client-version: 0.1.1+version: 0.1.2 synopsis: Skylark client. description: Skylark network client. homepage: https://github.com/githubuser/skylark-client#readme@@ -22,7 +22,6 @@ , http-types , lifted-async , preamble- , resourcet , stm , stm-conduit
src/Network/Skylark/Client.hs view
@@ -8,7 +8,6 @@ import Control.Concurrent.Async.Lifted import Control.Concurrent.STM-import Control.Monad.Trans.Resource import Data.Conduit import Data.Conduit.TQueue import Network.HTTP.Conduit@@ -16,7 +15,6 @@ import Network.HTTP.Types.Header import Preamble - {-# ANN module ("HLint: ignore Redundant flip"::String) #-} -- | Device-Uid Header@@ -31,18 +29,20 @@ -- | Download data from Skylark to sink. ---download :: MonadResource m => ByteString -> Manager -> Request -> Sink ByteString m () -> m ()-download device manager request sink = do- response <- flip http manager request- { method = methodGet- , requestHeaders =- [ (hAccept, sbpContentType)- , (hDevice, device)- , (hPragma, "proxy")- ]- }- responseBody response $$+- sink+download :: MonadIO m => ByteString -> Manager -> Request -> TBQueue ByteString -> m ()+download device manager request queue =+ liftIO $ runResourceT $ do+ response <- flip http manager request+ { method = methodGet+ , requestHeaders =+ [ (hAccept, sbpContentType)+ , (hDevice, device)+ , (hPragma, "proxy")+ ]+ }+ responseBody response $$+- sinkTBQueue queue + -- | Upload data to Skylark from source. -- upload :: MonadIO m => ByteString -> Manager -> Request -> TBQueue ByteString -> m ()@@ -58,10 +58,12 @@ -- | Run Skylark client. ---runSkylark :: MonadMain m => String -> ByteString -> Source m ByteString -> Sink ByteString m () -> m ()+runSkylark :: MonadControl m => String -> ByteString -> Source m ByteString -> Sink ByteString m () -> m () runSkylark url device source sink = do- manager <- liftIO $ newManager tlsManagerSettings- request <- parseRequest url- queue <- liftIO $ atomically $ newTBQueue 8192- void $ concurrently (download device manager request sink) $- concurrently (source $$ sinkTBQueue queue) (upload device manager request queue)+ manager <- liftIO $ newManager tlsManagerSettings+ request <- parseRequest url+ upQueue <- liftIO $ atomically $ newTBQueue 8192+ downQueue <- liftIO $ atomically $ newTBQueue 8192+ void $ concurrently+ (concurrently (download device manager request downQueue) (sourceTBQueue downQueue $$ sink))+ (concurrently (source $$ sinkTBQueue upQueue) (upload device manager request upQueue))