packages feed

irc-conduit 0.2.2.5 → 0.3.0.0

raw patch · 3 files changed

+28/−24 lines, 3 filesdep ~conduitPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: conduit

API changes (from Hackage documentation)

- Network.IRC.Conduit: floodProtector :: MonadIO m => NominalDiffTime -> IO (Conduit a m a)
+ Network.IRC.Conduit: floodProtector :: MonadIO m => NominalDiffTime -> IO (ConduitM a a m ())
- Network.IRC.Conduit: ircClient :: Int -> ByteString -> IO () -> Consumer (Either ByteString IrcEvent) IO () -> Producer IO IrcMessage -> IO ()
+ Network.IRC.Conduit: ircClient :: Int -> ByteString -> IO () -> ConduitM (Either ByteString IrcEvent) Void IO () -> ConduitM () IrcMessage IO () -> IO ()
- Network.IRC.Conduit: ircDecoder :: Monad m => Conduit ByteString m (Either ByteString IrcEvent)
+ Network.IRC.Conduit: ircDecoder :: Monad m => ConduitM ByteString (Either ByteString IrcEvent) m ()
- Network.IRC.Conduit: ircEncoder :: Monad m => Conduit IrcMessage m ByteString
+ Network.IRC.Conduit: ircEncoder :: Monad m => ConduitM IrcMessage ByteString m ()
- Network.IRC.Conduit: ircLossyDecoder :: Monad m => Conduit ByteString m IrcEvent
+ Network.IRC.Conduit: ircLossyDecoder :: Monad m => ConduitM ByteString IrcEvent m ()
- Network.IRC.Conduit: ircTLSClient :: Int -> ByteString -> IO () -> Consumer (Either ByteString IrcEvent) IO () -> Producer IO IrcMessage -> IO ()
+ Network.IRC.Conduit: ircTLSClient :: Int -> ByteString -> IO () -> ConduitM (Either ByteString IrcEvent) Void IO () -> ConduitM () IrcMessage IO () -> IO ()
- Network.IRC.Conduit: ircTLSClient' :: TLSClientConfig -> IO () -> Consumer (Either ByteString IrcEvent) IO () -> Producer IO IrcMessage -> IO ()
+ Network.IRC.Conduit: ircTLSClient' :: TLSClientConfig -> IO () -> ConduitM (Either ByteString IrcEvent) Void IO () -> ConduitM () IrcMessage IO () -> IO ()
- Network.IRC.Conduit: ircWithConn :: ((AppData -> IO ()) -> IO ()) -> IO () -> Consumer (Either ByteString IrcEvent) IO () -> Producer IO IrcMessage -> IO ()
+ Network.IRC.Conduit: ircWithConn :: ((AppData -> IO ()) -> IO ()) -> IO () -> ConduitM (Either ByteString IrcEvent) Void IO () -> ConduitM () IrcMessage IO () -> IO ()
- Network.IRC.Conduit.Internal: chunked :: Monad m => Conduit ByteString m ByteString
+ Network.IRC.Conduit.Internal: chunked :: Monad m => ConduitM ByteString ByteString m ()

Files

Network/IRC/Conduit.hs view
@@ -64,38 +64,39 @@ import Control.Monad            (when) import Control.Monad.IO.Class   (MonadIO, liftIO) import Data.ByteString          (ByteString)-import Data.Conduit             (Conduit, Consumer, Producer, (=$), ($$), (=$=), awaitForever, yield, runConduit)+import Data.Conduit             (ConduitM, (.|), awaitForever, yield, runConduit) import Data.Conduit.Network     (AppData, clientSettings, runTCPClient, appSource, appSink) import Data.Conduit.Network.TLS (TLSClientConfig(..), tlsClientConfig, runTLSClient) import Data.Monoid              ((<>)) import Data.Text                (unpack) import Data.Text.Encoding       (decodeUtf8) import Data.Time.Clock          (NominalDiffTime, getCurrentTime, addUTCTime, diffUTCTime)+import Data.Void                (Void) import Data.X509.Validation     (FailedReason(..)) import Network.Connection       (TLSSettings(..)) import Network.IRC.Conduit.Internal import Network.IRC.Conduit.Lens import Network.TLS              (ClientParams(..), ClientHooks(..), Supported(..), Version(..), defaultParamsClient)-import Network.TLS.Extra        (ciphersuite_all)+import Network.TLS.Extra        (ciphersuite_strong)  -- *Conduits  -- |A conduit which takes as input bytestrings representing encoded -- IRC messages, and decodes them to events. If decoding fails, the -- original bytestring is just passed through.-ircDecoder :: Monad m => Conduit ByteString m (Either ByteString IrcEvent)-ircDecoder = chunked =$= awaitForever (yield . fromByteString)+ircDecoder :: Monad m => ConduitM ByteString (Either ByteString IrcEvent) m ()+ircDecoder = chunked .| awaitForever (yield . fromByteString)  -- |Like 'ircDecoder', but discards messages which could not be -- decoded.-ircLossyDecoder :: Monad m => Conduit ByteString m IrcEvent-ircLossyDecoder = chunked =$= awaitForever lossy+ircLossyDecoder :: Monad m => ConduitM ByteString IrcEvent m ()+ircLossyDecoder = chunked .| awaitForever lossy   where     lossy bs = either (\_ -> return ()) yield $ fromByteString bs  -- |A conduit which takes as input irc messages, and produces as -- output the encoded bytestring representation.-ircEncoder :: Monad m => Conduit IrcMessage m ByteString+ircEncoder :: Monad m => ConduitM IrcMessage ByteString m () ircEncoder = awaitForever (yield . (<>"\r\n") . toByteString)  -- |A conduit which rate limits output sent downstream. Awaiting on@@ -104,7 +105,7 @@ floodProtector :: MonadIO m                => NominalDiffTime                -- ^The minimum time between sending adjacent messages.-               -> IO (Conduit a m a)+               -> IO (ConduitM a a m ()) floodProtector delay = do   now  <- getCurrentTime   mvar <- newMVar now@@ -141,9 +142,9 @@           -> IO ()           -- ^Any initialisation work (started concurrently with the           -- producer and consumer)-          -> Consumer (Either ByteString IrcEvent) IO ()+          -> ConduitM (Either ByteString IrcEvent) Void IO ()           -- ^The consumer of irc events-          -> Producer IO IrcMessage+          -> ConduitM () IrcMessage IO ()           -- ^The producer of irc messages           -> IO () ircClient port host = ircWithConn $ runTCPClient $ clientSettings port host@@ -156,8 +157,8 @@ ircWithConn :: ((AppData -> IO ()) -> IO ())             -- ^The initialised connection.             -> IO ()-            -> Consumer (Either ByteString IrcEvent) IO ()-            -> Producer IO IrcMessage+            -> ConduitM (Either ByteString IrcEvent) Void IO ()+            -> ConduitM () IrcMessage IO ()             -> IO () ircWithConn runner start cons prod = runner $ \appdata -> runConcurrently $      Concurrently start@@ -166,10 +167,11 @@    where     runSource appdata  = do-      runConduit $ appSource appdata =$= ircDecoder =$ cons+      runConduit $ appSource appdata .| ircDecoder .| cons       ioError    $ userError "Upstream source closed." -    runSink appdata = prod $$ ircEncoder =$ appSink appdata+    runSink appdata =+      runConduit $ prod .| ircEncoder .| appSink appdata  -- **TLS @@ -178,16 +180,18 @@ ircTLSClient :: Int              -> ByteString              -> IO ()-             -> Consumer (Either ByteString IrcEvent) IO ()-             -> Producer IO IrcMessage -> IO ()+             -> ConduitM (Either ByteString IrcEvent) Void IO ()+             -> ConduitM () IrcMessage IO ()+             -> IO () ircTLSClient port host = ircTLSClient' (defaultTLSConfig port host)  -- |Like 'ircTLSClient', but takes the configuration to use, which -- includes the host and port. ircTLSClient' :: TLSClientConfig               -> IO ()-              -> Consumer (Either ByteString IrcEvent) IO ()-              -> Producer IO IrcMessage -> IO ()+              -> ConduitM (Either ByteString IrcEvent) Void IO ()+              -> ConduitM () IrcMessage IO ()+              -> IO () ircTLSClient' cfg = ircWithConn (runTLSClient cfg)  -- |The default TLS settings for 'ircTLSClient'.@@ -202,7 +206,7 @@       { onServerCertificate = validate }     , clientSupported = (clientSupported cpara)       { supportedVersions = [TLS12, TLS11, TLS10]-      , supportedCiphers = ciphersuite_all+      , supportedCiphers = ciphersuite_strong       }     }   }
Network/IRC/Conduit/Internal.hs view
@@ -20,7 +20,7 @@ import Control.Arrow       ((&&&)) import Data.ByteString     (ByteString, isSuffixOf, singleton, unpack) import Data.Char           (ord)-import Data.Conduit        (Conduit, await, yield)+import Data.Conduit        (ConduitM, await, yield) import Data.Maybe          (listToMaybe, isJust) import Data.Monoid         ((<>)) import Data.Profunctor (Choice)@@ -50,7 +50,7 @@ -- *Conduits  -- |Split up incoming bytestrings into new lines.-chunked :: Monad m => Conduit ByteString m ByteString+chunked :: Monad m => ConduitM ByteString ByteString m () chunked = chunked' ""   where     chunked' !leftover = do
irc-conduit.cabal view
@@ -10,7 +10,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.2.2.5+version:             0.3.0.0  -- A short (one-line) description of the package. synopsis:            Streaming IRC message library using conduits.@@ -82,7 +82,7 @@   build-depends:       base                >=4.8   && <5                      , async               >=2.0   && <2.2                      , bytestring          >=0.10  && <0.11-                     , conduit             >=1.2   && <1.4+                     , conduit             >=1.2.8 && <1.4                      , conduit-extra       >=1.1   && <1.4                      , connection          >=0.2   && <0.3                      , irc                 >=0.6   && <0.7@@ -108,4 +108,4 @@ source-repository this   type:     git   location: https://github.com/barrucadu/irc-conduit.git-  tag:      0.2.2.5+  tag:      0.3.0.0