postie 0.3.2.0 → 0.4.0.0
raw patch · 7 files changed
+30/−16 lines, 7 files
Files
- postie.cabal +2/−2
- src/Web/Postie.hs +1/−0
- src/Web/Postie/Address.hs +1/−1
- src/Web/Postie/Session.hs +1/−4
- src/Web/Postie/SessionID.hs +23/−0
- src/Web/Postie/Settings.hs +1/−0
- src/Web/Postie/Types.hs +1/−9
postie.cabal view
@@ -1,5 +1,5 @@ name: postie-version: 0.3.2.0+version: 0.4.0.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -47,7 +47,7 @@ bytestring >=0.10.0.2, tls >=1.2.6, pipes >=4.1.0, pipes-parse >=3.0.1, attoparsec >=0.10.4.0, transformers >=0.3.0.0, mtl >=2.1.2, cprng-aes >=0.5.2, data-default-class >=0.0.1, uuid >= 1.3.3- exposed-modules: Web.Postie Web.Postie.Types Web.Postie.Settings Web.Postie.Address+ exposed-modules: Web.Postie Web.Postie.Types Web.Postie.Settings Web.Postie.Address Web.Postie.SessionID exposed: True buildable: True default-language: Haskell2010
src/Web/Postie.hs view
@@ -33,6 +33,7 @@ import Web.Postie.Connection import Web.Postie.Types import Web.Postie.Session+import Web.Postie.SessionID import Web.Postie.Pipes (UnexpectedEndOfInputException, TooMuchDataException) import Network (PortID (PortNumber), withSocketsDo, listenOn)
src/Web/Postie/Address.hs view
@@ -23,7 +23,7 @@ deriving (Eq, Ord, Typeable) instance Show Address where- show = show . toByteString+ show = BS.unpack . toByteString instance IsString Address where fromString = either (error "invalid email literal") id . parseOnly addrSpec . BS.pack
src/Web/Postie/Session.hs view
@@ -10,11 +10,11 @@ import Web.Postie.Types import Web.Postie.Settings import Web.Postie.Connection+import Web.Postie.SessionID import Web.Postie.Protocol (Event(..), Reply, reply, reply', renderReply) import qualified Web.Postie.Protocol as SMTP import Web.Postie.Pipes -import Data.UUID.V4 import qualified Data.ByteString.Char8 as BS import qualified Pipes.Parse as P@@ -35,9 +35,6 @@ data Transaction = TxnInitial | TxnHaveMailFrom Address | TxnHaveRecipient Address [Address]--mkSessionID :: IO SessionID-mkSessionID = SessionID `fmap` nextRandom runSession :: SessionID -> Settings -> Connection -> Application -> IO () runSession sid settings connection app =
+ src/Web/Postie/SessionID.hs view
@@ -0,0 +1,23 @@++module Web.Postie.SessionID (+ SessionID -- | Unique session identifier+ , mkSessionID -- | Creates a SessionID+ , toByteString -- | Converts SessionID to ByteString+ ) where++import Data.UUID (UUID, toString, toASCIIBytes)+import Data.UUID.V4 (nextRandom)+import Data.ByteString (ByteString)+import Data.Typeable (Typeable)++newtype SessionID = SessionID { toUUID :: UUID }+ deriving (Eq, Ord, Typeable)++instance Show SessionID where+ show = toString . toUUID++mkSessionID :: IO SessionID+mkSessionID = SessionID `fmap` nextRandom++toByteString :: SessionID -> ByteString+toByteString = toASCIIBytes . toUUID
src/Web/Postie/Settings.hs view
@@ -15,6 +15,7 @@ import Web.Postie.Types import Web.Postie.Address+import Web.Postie.SessionID import qualified Web.Postie.Connection as Connection import Network (HostName, PortID(..))
src/Web/Postie/Types.hs view
@@ -3,22 +3,14 @@ HandlerResponse(..) , Mail(..) , Application- , SessionID(..) ) where import Web.Postie.Address+import Web.Postie.SessionID (SessionID) -import Data.UUID-import Data.Typeable (Typeable) import Data.ByteString (ByteString) import Pipes (Producer)--newtype SessionID = SessionID { toUUID :: UUID }- deriving (Eq, Ord, Typeable)--instance Show SessionID where- show = show . toUUID -- | Handler response indicating validity of email transaction. data HandlerResponse = Accepted -- ^ Accepted, allow further processing.