packages feed

HaskellNet 0.4.5 → 0.5

raw patch · 5 files changed

+44/−6 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Network.HaskellNet.Auth: instance Eq AuthType
- Network.HaskellNet.Auth: instance Show AuthType
- Network.HaskellNet.BSStream: bsClose :: BSStream -> IO ()
- Network.HaskellNet.BSStream: bsFlush :: BSStream -> IO ()
- Network.HaskellNet.BSStream: bsGet :: BSStream -> Int -> IO ByteString
- Network.HaskellNet.BSStream: bsGetLine :: BSStream -> IO ByteString
- Network.HaskellNet.BSStream: bsIsOpen :: BSStream -> IO Bool
- Network.HaskellNet.BSStream: bsPut :: BSStream -> ByteString -> IO ()
- Network.HaskellNet.IMAP: instance Show SearchQuery
- Network.HaskellNet.IMAP.Types: _exists :: MailboxInfo -> Integer
- Network.HaskellNet.IMAP.Types: _flags :: MailboxInfo -> [Flag]
- Network.HaskellNet.IMAP.Types: _isFlagWritable :: MailboxInfo -> Bool
- Network.HaskellNet.IMAP.Types: _isWritable :: MailboxInfo -> Bool
- Network.HaskellNet.IMAP.Types: _mailbox :: MailboxInfo -> MailboxName
- Network.HaskellNet.IMAP.Types: _permanentFlags :: MailboxInfo -> [Flag]
- Network.HaskellNet.IMAP.Types: _recent :: MailboxInfo -> Integer
- Network.HaskellNet.IMAP.Types: _uidNext :: MailboxInfo -> UID
- Network.HaskellNet.IMAP.Types: _uidValidity :: MailboxInfo -> UID
- Network.HaskellNet.IMAP.Types: advChar :: RespDerivs -> Result RespDerivs Char
- Network.HaskellNet.IMAP.Types: advPos :: RespDerivs -> Pos
- Network.HaskellNet.IMAP.Types: advTag :: RespDerivs -> Result RespDerivs String
- Network.HaskellNet.IMAP.Types: dvFlags :: RespDerivs -> Result RespDerivs [Flag]
- Network.HaskellNet.IMAP.Types: exists :: MboxUpdate -> Maybe Integer
- Network.HaskellNet.IMAP.Types: instance Derivs RespDerivs
- Network.HaskellNet.IMAP.Types: instance Eq Attribute
- Network.HaskellNet.IMAP.Types: instance Eq Flag
- Network.HaskellNet.IMAP.Types: instance Eq MailboxInfo
- Network.HaskellNet.IMAP.Types: instance Eq MailboxStatus
- Network.HaskellNet.IMAP.Types: instance Eq MboxUpdate
- Network.HaskellNet.IMAP.Types: instance Eq ServerResponse
- Network.HaskellNet.IMAP.Types: instance Eq StatusCode
- Network.HaskellNet.IMAP.Types: instance Read MailboxStatus
- Network.HaskellNet.IMAP.Types: instance Show Attribute
- Network.HaskellNet.IMAP.Types: instance Show Flag
- Network.HaskellNet.IMAP.Types: instance Show MailboxInfo
- Network.HaskellNet.IMAP.Types: instance Show MailboxStatus
- Network.HaskellNet.IMAP.Types: instance Show MboxUpdate
- Network.HaskellNet.IMAP.Types: instance Show ServerResponse
- Network.HaskellNet.IMAP.Types: instance Show StatusCode
- Network.HaskellNet.IMAP.Types: recent :: MboxUpdate -> Maybe Integer
- Network.HaskellNet.POP3.Types: instance Eq Response
- Network.HaskellNet.POP3.Types: instance Show Response
- Network.HaskellNet.SMTP: instance Eq Command
- Network.HaskellNet.SMTP: instance Eq Response
- Network.HaskellNet.SMTP: instance Show Command
- Network.HaskellNet.SMTP: instance Show Response
+ Network.HaskellNet.Auth: instance GHC.Classes.Eq Network.HaskellNet.Auth.AuthType
+ Network.HaskellNet.Auth: instance GHC.Show.Show Network.HaskellNet.Auth.AuthType
+ Network.HaskellNet.BSStream: [bsClose] :: BSStream -> IO ()
+ Network.HaskellNet.BSStream: [bsFlush] :: BSStream -> IO ()
+ Network.HaskellNet.BSStream: [bsGetLine] :: BSStream -> IO ByteString
+ Network.HaskellNet.BSStream: [bsGet] :: BSStream -> Int -> IO ByteString
+ Network.HaskellNet.BSStream: [bsIsOpen] :: BSStream -> IO Bool
+ Network.HaskellNet.BSStream: [bsPut] :: BSStream -> ByteString -> IO ()
+ Network.HaskellNet.BSStream: [bsWaitForInput] :: BSStream -> Int -> IO Bool
+ Network.HaskellNet.IMAP: idle :: IMAPConnection -> Int -> IO ()
+ Network.HaskellNet.IMAP: instance GHC.Show.Show Network.HaskellNet.IMAP.SearchQuery
+ Network.HaskellNet.IMAP.Types: [_exists] :: MailboxInfo -> Integer
+ Network.HaskellNet.IMAP.Types: [_flags] :: MailboxInfo -> [Flag]
+ Network.HaskellNet.IMAP.Types: [_isFlagWritable] :: MailboxInfo -> Bool
+ Network.HaskellNet.IMAP.Types: [_isWritable] :: MailboxInfo -> Bool
+ Network.HaskellNet.IMAP.Types: [_mailbox] :: MailboxInfo -> MailboxName
+ Network.HaskellNet.IMAP.Types: [_permanentFlags] :: MailboxInfo -> [Flag]
+ Network.HaskellNet.IMAP.Types: [_recent] :: MailboxInfo -> Integer
+ Network.HaskellNet.IMAP.Types: [_uidNext] :: MailboxInfo -> UID
+ Network.HaskellNet.IMAP.Types: [_uidValidity] :: MailboxInfo -> UID
+ Network.HaskellNet.IMAP.Types: [advChar] :: RespDerivs -> Result RespDerivs Char
+ Network.HaskellNet.IMAP.Types: [advPos] :: RespDerivs -> Pos
+ Network.HaskellNet.IMAP.Types: [advTag] :: RespDerivs -> Result RespDerivs String
+ Network.HaskellNet.IMAP.Types: [dvFlags] :: RespDerivs -> Result RespDerivs [Flag]
+ Network.HaskellNet.IMAP.Types: [exists] :: MboxUpdate -> Maybe Integer
+ Network.HaskellNet.IMAP.Types: [recent] :: MboxUpdate -> Maybe Integer
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.Attribute
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.Flag
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.MailboxInfo
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.MailboxStatus
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.MboxUpdate
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.ServerResponse
+ Network.HaskellNet.IMAP.Types: instance GHC.Classes.Eq Network.HaskellNet.IMAP.Types.StatusCode
+ Network.HaskellNet.IMAP.Types: instance GHC.Read.Read Network.HaskellNet.IMAP.Types.MailboxStatus
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.Attribute
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.Flag
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.MailboxInfo
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.MailboxStatus
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.MboxUpdate
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.ServerResponse
+ Network.HaskellNet.IMAP.Types: instance GHC.Show.Show Network.HaskellNet.IMAP.Types.StatusCode
+ Network.HaskellNet.IMAP.Types: instance Text.Packrat.Parse.Derivs Network.HaskellNet.IMAP.Types.RespDerivs
+ Network.HaskellNet.POP3.Types: instance GHC.Classes.Eq Network.HaskellNet.POP3.Types.Response
+ Network.HaskellNet.POP3.Types: instance GHC.Show.Show Network.HaskellNet.POP3.Types.Response
+ Network.HaskellNet.SMTP: instance GHC.Classes.Eq Network.HaskellNet.SMTP.Command
+ Network.HaskellNet.SMTP: instance GHC.Classes.Eq Network.HaskellNet.SMTP.Response
+ Network.HaskellNet.SMTP: instance GHC.Show.Show Network.HaskellNet.SMTP.Command
+ Network.HaskellNet.SMTP: instance GHC.Show.Show Network.HaskellNet.SMTP.Response
- Network.HaskellNet.BSStream: BSStream :: IO ByteString -> (Int -> IO ByteString) -> (ByteString -> IO ()) -> IO () -> IO () -> IO Bool -> BSStream
+ Network.HaskellNet.BSStream: BSStream :: IO ByteString -> (Int -> IO ByteString) -> (ByteString -> IO ()) -> IO () -> IO () -> IO Bool -> (Int -> IO Bool) -> BSStream

Files

CHANGELOG view
@@ -1,10 +1,23 @@+0.5 (2015-11-5)+---------------++ - No longer render Bcc field when rendering messages (thanks Dan Aloni+   <alonid@gmail.com>)+ - Implemented IDLE command (thanks Alexander Inyukhin+   <shurick@sectorb.msk.ru>)+ - Added stream wait function (bsWaitForInput field of type BSStream)+   (thanks Alexander Inyukhin <shurick@sectorb.msk.ru>)+ - SMTP: RCPT also includes Cc and Bcc lists rather than just To list+   (thanks Author: Dan Aloni <alonid@gmail.com>)+ 0.4.4 -> 0.4.5 (2015-06-18)+---------------------------   - IMAP: select command must quote the mailbox name    (see https://github.com/jtdaugherty/HaskellNet/issues/35)  0.4.3 -> 0.4.4 (2015-04-11)---------------+---------------------------   - Fix a bug in IMAP Parser for listing Mboxes    (see https://github.com/jtdaugherty/HaskellNet/issues/34)
HaskellNet.cabal view
@@ -4,7 +4,7 @@                 SMTP, and IMAP protocols.  NOTE: this package will be                 split into smaller, protocol-specific packages in the                 future.-Version:        0.4.5+Version:        0.5 Copyright:      (c) 2006 Jun Mukai Author:         Jun Mukai Maintainer:	Jonathan Daugherty <cygnus@foobox.com>,
src/Network/HaskellNet/BSStream.hs view
@@ -28,6 +28,8 @@              -- ^Close the stream.              , bsIsOpen :: IO Bool              -- ^Is the stream open?+             , bsWaitForInput :: Int -> IO Bool+             -- ^Is data available?              }  -- |Build a byte string stream which operates on a 'Handle'.@@ -41,4 +43,5 @@                  op <- hIsOpen h                  if op then (hClose h) else return ()              , bsIsOpen = hIsOpen h+             , bsWaitForInput = hWaitForInput h              }
src/Network/HaskellNet/IMAP.hs view
@@ -12,6 +12,7 @@       -- ** selected state commands     , check, close, expunge     , search, store, copy+    , idle       -- * fetch commands     , fetch, fetchHeader, fetchSize, fetchHeaderFields, fetchHeaderFieldsNot     , fetchFlags, fetchR, fetchByString, fetchByStringR@@ -193,6 +194,26 @@ ---------------------------------------------------------------------- -- IMAP commands --++idle :: IMAPConnection -> Int -> IO ()+idle conn timeout =+    do+        (buf',num) <- sendCommand' conn "IDLE"+        buf <-+            if BS.take 2 buf' == BS.pack "+ "+                then do+                    _ <- bsWaitForInput (stream conn) timeout+                    bsPutCrLf (stream conn) $ BS.pack "DONE"+                    getResponse $ stream conn+                else+                    return buf'+        let (resp, mboxUp, value) = eval pNone (show6 num) buf+        case resp of+         OK _ _        -> do mboxUpdate conn mboxUp+                             return value+         NO _ msg      -> fail ("NO: " ++ msg)+         BAD _ msg     -> fail ("BAD: " ++ msg)+         PREAUTH _ msg -> fail ("preauth: " ++ msg)  noop :: IMAPConnection -> IO () noop conn = sendCommand conn "NOOP" pNone
src/Network/HaskellNet/SMTP.hs view
@@ -347,10 +347,11 @@ sendMimeMail2 :: Mail -> SMTPConnection -> IO () sendMimeMail2 mail con = do     let (Address _ from) = mailFrom mail-        tos = map (T.unpack . addressEmail) $ mailTo mail-    when (null tos) $ fail "no receiver specified."-    renderedMail <- renderMail' mail-    sendMail (T.unpack from) tos (lazyToStrict renderedMail) con+        recps = map (T.unpack . addressEmail)+                     $ (mailTo mail ++ mailCc mail ++ mailBcc mail)+    when (null recps) $ fail "no receiver specified."+    renderedMail <- renderMail' $ mail { mailBcc = [] }+    sendMail (T.unpack from) recps (lazyToStrict renderedMail) con  -- haskellNet uses strict bytestrings -- TODO: look at making haskellnet lazy