Browse Source

Finished removing Address

Marcos Dumay de Medeiros 7 years ago
parent
commit
88a8f8d0b5

+ 0 - 2
fcmtp-data.cabal

@@ -39,7 +39,6 @@ library
         Data.SMTP.ResponseCode
         Data.SMTP.Seal
         Data.SMTP.URI
-        Data.SMTP.Address
         Data.SMTP.Crypto.CP
         Data.SMTP.Parser.Host
     exposed: True
@@ -55,7 +54,6 @@ library
         Data.SMTP.Types.Mime Data.SMTP.Parser.Mime
         Data.SMTP.Types.Resource Data.SMTP.Parser.Resource
         Data.SMTP.Types.Seal, Data.SMTP.Parser.Seal,
-        Data.SMTP.Types.Address Data.SMTP.Parser.Address
         Data.SMTP.Types.URI Data.SMTP.Parser.URI,
         Data.SMTP.Crypto.Types.CP, Data.SMTP.Crypto.Algos.CP
     ghc-options: -Wall -fno-warn-unused-do-bind -fwarn-incomplete-patterns

+ 0 - 4
src/Data/SMTP/Address.hs

@@ -1,4 +0,0 @@
-module Data.SMTP.Address (module Data.SMTP.Types.Address, module Data.SMTP.Parser.Address) where
-
-import Data.SMTP.Types.Address
-import Data.SMTP.Parser.Address

+ 0 - 26
src/Data/SMTP/Parser/Address.hs

@@ -1,26 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Data.SMTP.Parser.Address (
-  parseAddress,
-  renderHeaderAddress,
-  parseMetadataAddress,
-  renderMetadataAddress
-  ) where
-
-import Data.Attoparsec.ByteString.Char8
-import qualified Data.SMTP.URI as URI
-import Data.SMTP.Types.Address
-import Data.ByteString (ByteString)
-import qualified Text.StringConvert as SC
-
-parseAddress :: Parser Address
-parseAddress = Address <$> URI.parseURI
-
-renderHeaderAddress :: Address -> ByteString
-renderHeaderAddress a = SC.s . show $ a
-
-renderMetadataAddress :: Address -> ByteString
-renderMetadataAddress = renderHeaderAddress
-
-parseMetadataAddress :: Parser Address
-parseMetadataAddress = parseAddress

+ 10 - 25
src/Data/SMTP/Parser/Seal.hs

@@ -7,10 +7,18 @@ module Data.SMTP.Parser.Seal (
 import Data.SMTP.Types.Seal
 -- import Data.SMTP.Types.Resource
 import qualified Data.Attoparsec.Text as A
-import qualified Data.ByteString.Base64 as B64
+import qualified Data.ByteString.Base64.URL as B64
 import Data.ByteString (ByteString)
 import Text.StringConvert
 
+{- |
+Parses a seal inside a URI parameter.
+
+In the format: cpId:code[:nonce]
+
+Where all the values are binary octet streams
+encoded in base64url.
+-}
 parseURISeal :: A.Parser Seal
 parseURISeal = do
   mycp <- base64
@@ -27,36 +35,13 @@ parseURISeal = do
 base64 :: A.Parser ByteString
 base64 = do
   e <- A.takeWhile isBase64Char
-  case B64.decode . s . map replaceSlash . s $ e of
+  case B64.decode . s $ e of
     Left r -> fail r
     Right r -> return r
   where
-    replaceSlash '-' = '/'
-    replaceSlash c = c
---      | c == W8._hyphen = W8._slash
---      | otherwise = c
     isBase64Char c
       | c >= '0' && c <= '9' = True
       | c >= 'a' && c <= 'z' = True
       | c >= 'A' && c <= 'Z' = True
       | c == '+' || c == '-' || c == '=' = True
       | otherwise = False
-
--- headersToSeal :: [Header] -> Maybe Seal
--- headersToSeal hh = let
---   mycp = decode2maybe =<< getH hh cpHeaderName
---   mynonce = decode2maybe =<< getH hh nonceHeaderName
---   mycode = decode2maybe =<< getH hh sealHeaderName
---   in do
---     cp' <- mycp
---     code' <- mycode
---     Just $ Seal cp' code' mynonce
---   where
---     getH :: [Header] -> String -> Maybe ByteString
---     getH hh' h = C8.pack <$> getHeaderValue hh' h
---     either2maybef :: (a -> Either b c) -> a -> Maybe c
---     either2maybef f v = either2maybe $ f v
---     either2maybe :: Either a b -> Maybe b
---     either2maybe (Left _) = Nothing
---     either2maybe (Right v) = Just v
---     decode2maybe = either2maybef B64.decode

+ 0 - 33
src/Data/SMTP/Types/Address.hs

@@ -1,33 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Data.SMTP.Types.Address where
-
-import qualified Data.SMTP.Account as Ac
-import qualified Data.SMTP.URI as URI
-import qualified Data.SMTP.Seal as Seal
-import qualified Data.Text as T
-import qualified Data.Attoparsec.Text as A
-
-import Text.StringConvert
-
-data Address = Address URI.URI
-             deriving (Eq, Ord)
-instance Show Address where
-  show (Address u) = show u
-
-headerName :: String
-headerName = "fCMTP-Address"
-
-host :: Address -> Ac.HostName
-host = Ac.domain . account
-
-account :: Address -> Ac.Account
-account (Address u) = URI.account u
-
-seal :: URI.URI -> Maybe Seal.Seal
-seal u = do
-  se <- URI.getParameter "seal" u
-  eitherToMaybe . A.parseOnly Seal.parseURISeal . T.pack $ se
-  where
-    eitherToMaybe (Left _) = Nothing
-    eitherToMaybe (Right v) = Just v

+ 4 - 8
src/Data/SMTP/Types/Seal.hs

@@ -7,14 +7,10 @@ data Seal = Seal {
   seal :: ByteString,
   nonce :: Maybe ByteString} deriving (Eq, Ord, Read, Show)
 
-data SealAlgo = ED25519 deriving (Eq, Ord, Read, Show, Bounded, Enum)
-
-cpHeaderName :: String
-cpHeaderName = "FCMTP-SEAL-CP"
-nonceHeaderName :: String
-nonceHeaderName = "FCMTP-SEAL-NONCE"
-sealHeaderName :: String
-sealHeaderName = "FCMTP-SEAL"
+{- |
+Name of URI parameter (that follows the ? sign) that holds a seal: "seal"
 
+(Quite unexpected, wasn't it?)
+-}
 sealURIParam :: String
 sealURIParam = "seal"