packages feed

gravatar 0.1 → 0.2

raw patch · 3 files changed

+44/−9 lines, 3 filesdep +networkPVP ok

version bump matches the API change (PVP)

Dependencies added: network

API changes (from Hackage documentation)

+ Network.Gravatar: data Size
+ Network.Gravatar: gravatarWith :: String -> Maybe Rating -> Maybe Size -> Maybe String -> String
+ Network.Gravatar: size :: Int -> Maybe Size

Files

Network/Gravatar.hs view
@@ -10,29 +10,61 @@ -- -------------------------------------------------------------------- ----- Return the url of a gravatar+-- Return the URL of a gravatar image - an image associated with an+-- email address. --  module Network.Gravatar (-    gravatar-    , Rating(..)+    gravatar, gravatarWith+    ,Rating(..)+    ,Size,size   ) where  import Data.Digest.OpenSSL.MD5 import Data.List import Data.Char+import Network.URI import qualified Data.ByteString.Char8 as S +------------------------------------------------------------------------+-- Implementing the gravatar protocol+ -- | Classification ratings for gravatars data Rating = G | PG | R | X     deriving (Eq,Ord,Bounded,Enum,Show,Read) +-- | An image size in pixels from 1 to 80.+newtype Size = Size Int++-- | A smart constructor for the Size type, ensuring it is between 1 and 80+size :: Int -> Maybe Size+size n | n >= 1 && n <= 80 = Just (Size n)+       | otherwise         = Nothing++------------------------------------------------------------------------+ baseURL     = "http://www.gravatar.com/avatar.php?" gravatar_id = "gravatar_id" --- | Return the url of a gravatar for an email address (a globally recognized avatar).+-- | Return the url of a gravatar for an+-- email address (a globally recognized avatar).+-- gravatar :: String -> String-gravatar who = concat [baseURL ,gravatar_id ,"=" ,(md5sum (S.pack (clean who)))]+gravatar who = gravatarWith who Nothing Nothing Nothing++-- | Construct the url of a gravatar with optional classification+-- ratings, an optional size, and optional default image.+--+gravatarWith :: String+             -> Maybe Rating+             -> Maybe Size+             -> Maybe String+             -> String+gravatarWith who rating' sz' dflt'+             = concat [baseURL ,gravatar_id ,"=" ,(md5sum (S.pack (clean who))),rating,sz,dflt ]     where-        clean = let f = reverse . dropWhile isSpace in f . f+        clean  = let f = reverse . dropWhile isSpace in f . f+        rating = maybe "" (\r        -> "&rating="++show r) rating'+        sz     = maybe "" (\(Size n) -> "&size="++show n) sz'+        dflt   = maybe "" (\r        -> "&default="++escapeURIString isUnreserved  r) dflt' 
gravatar.cabal view
@@ -1,9 +1,9 @@ name:                gravatar-version:             0.1+version:             0.2 homepage:            http://code.haskell.org/~dons/code/gravatar synopsis:            Find the url of the gravatar associated with an email address. description:         -    Gravatars <gravatar.com> are globally unique images associated with an email+    Gravatars (<http://gravatar.com>) are globally unique images associated with an email     address, widely used in social networking sites. This library     lets you find the URL of a gravatar .png associated with an email     address.@@ -25,4 +25,4 @@         build-depends: base >= 3, bytestring     else         build-depends: base < 3-    build-depends: nano-md5+    build-depends: nano-md5, network
tests/tests.hs view
@@ -2,3 +2,6 @@  main = do     print $ gravatar "dons@galois.com" == "http://www.gravatar.com/avatar.php?gravatar_id=f21827076a1d0725c4f4bd5a640102e9"++    print $ (gravatarWith "dons@galois.com" (Just R) Nothing (Just "http://haskell.org") ) == "http://www.gravatar.com/avatar.php?gravatar_id=f21827076a1d0725c4f4bd5a640102e9&rating=R&default=http%3A%2F%2Fhaskell.org"+