Libravatar support \o/
This commit is contained in:
parent
16d33da4de
commit
ec49a4c424
6 changed files with 58 additions and 0 deletions
38
src/Vervis/Avatar.hs
Normal file
38
src/Vervis/Avatar.hs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{- This file is part of Vervis.
|
||||||
|
-
|
||||||
|
- Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
|
||||||
|
-
|
||||||
|
- ♡ Copying is an act of love. Please copy, reuse and share.
|
||||||
|
-
|
||||||
|
- The author(s) have dedicated all copyright and related and neighboring
|
||||||
|
- rights to this software to the public domain worldwide. This software is
|
||||||
|
- distributed without any warranty.
|
||||||
|
-
|
||||||
|
- You should have received a copy of the CC0 Public Domain Dedication along
|
||||||
|
- with this software. If not, see
|
||||||
|
- <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
-}
|
||||||
|
|
||||||
|
module Vervis.Avatar
|
||||||
|
( getAvatarUrl
|
||||||
|
)
|
||||||
|
where
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
|
||||||
|
import Control.Monad.IO.Class (liftIO)
|
||||||
|
import Data.Default.Class (def)
|
||||||
|
import Data.Text (Text)
|
||||||
|
import Network.Libravatar
|
||||||
|
import Network.Wai (isSecure)
|
||||||
|
import Yesod.Core (MonadHandler)
|
||||||
|
import Yesod.Core.Handler (waiRequest)
|
||||||
|
|
||||||
|
getAvatarUrl :: MonadHandler m => Text -> m (Maybe Text)
|
||||||
|
getAvatarUrl email = do
|
||||||
|
secure <- isSecure <$> waiRequest
|
||||||
|
let opts = def
|
||||||
|
{ optSecure = secure
|
||||||
|
, optTryGravatar = False
|
||||||
|
}
|
||||||
|
liftIO $ avatarUrl (Email email) opts
|
|
@ -31,6 +31,7 @@ import Text.Blaze.Html (toHtml)
|
||||||
import Yesod.Auth.HashDB (setPassword)
|
import Yesod.Auth.HashDB (setPassword)
|
||||||
|
|
||||||
import Vervis.Model.Ident
|
import Vervis.Model.Ident
|
||||||
|
import Vervis.Widget (avatarW)
|
||||||
|
|
||||||
-- | Get list of users
|
-- | Get list of users
|
||||||
getPeopleR :: Handler Html
|
getPeopleR :: Handler Html
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
module Vervis.Widget
|
module Vervis.Widget
|
||||||
( breadcrumbsW
|
( breadcrumbsW
|
||||||
, revisionW
|
, revisionW
|
||||||
|
, avatarW
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ import qualified Data.Text as T (take)
|
||||||
|
|
||||||
import Data.Revision.Local
|
import Data.Revision.Local
|
||||||
import Development.DarcsRev (darcsTotalPatches, darcsRevision)
|
import Development.DarcsRev (darcsTotalPatches, darcsRevision)
|
||||||
|
import Vervis.Avatar (getAvatarUrl)
|
||||||
import Vervis.Settings (widgetFile)
|
import Vervis.Settings (widgetFile)
|
||||||
import Vervis.Style
|
import Vervis.Style
|
||||||
import Vervis.Time (showDate)
|
import Vervis.Time (showDate)
|
||||||
|
@ -50,3 +52,14 @@ revisionW =
|
||||||
repo = "vervis" :: Text
|
repo = "vervis" :: Text
|
||||||
changes = $darcsTotalPatches :: Int
|
changes = $darcsTotalPatches :: Int
|
||||||
in $(widgetFile "widget/revision")
|
in $(widgetFile "widget/revision")
|
||||||
|
|
||||||
|
avatarW :: Text -> WidgetT site IO ()
|
||||||
|
avatarW email = do
|
||||||
|
murl <- getAvatarUrl email
|
||||||
|
[whamlet|
|
||||||
|
<div>
|
||||||
|
$maybe url <- murl
|
||||||
|
<img src=#{url}>
|
||||||
|
$nothing
|
||||||
|
<p>INVALID EMAIL
|
||||||
|
|]
|
||||||
|
|
|
@ -20,6 +20,7 @@ extra-deps:
|
||||||
- hit-graph-0.1
|
- hit-graph-0.1
|
||||||
- hit-harder-0.1
|
- hit-harder-0.1
|
||||||
- hit-network-0.1
|
- hit-network-0.1
|
||||||
|
- libravatar-0.4
|
||||||
- monad-hash-0.1
|
- monad-hash-0.1
|
||||||
- SimpleAES-0.4.2
|
- SimpleAES-0.4.2
|
||||||
# - ssh-0.3.2
|
# - ssh-0.3.2
|
||||||
|
|
|
@ -12,6 +12,9 @@ $# You should have received a copy of the CC0 Public Domain Dedication along
|
||||||
$# with this software. If not, see
|
$# with this software. If not, see
|
||||||
$# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
$# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
$maybe avatar <- avatarW <$> personEmail person
|
||||||
|
^{avatar}
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href=@{ProjectsR ident}>Projects
|
<a href=@{ProjectsR ident}>Projects
|
||||||
|
|
|
@ -74,6 +74,7 @@ library
|
||||||
Yesod.Paginate.Local
|
Yesod.Paginate.Local
|
||||||
|
|
||||||
Vervis.Application
|
Vervis.Application
|
||||||
|
Vervis.Avatar
|
||||||
Vervis.BinaryBody
|
Vervis.BinaryBody
|
||||||
Vervis.Changes
|
Vervis.Changes
|
||||||
Vervis.Content
|
Vervis.Content
|
||||||
|
@ -205,6 +206,7 @@ library
|
||||||
, hourglass
|
, hourglass
|
||||||
, http-conduit
|
, http-conduit
|
||||||
, http-types
|
, http-types
|
||||||
|
, libravatar
|
||||||
-- for converting Darcs patch hash Digest to ByteString
|
-- for converting Darcs patch hash Digest to ByteString
|
||||||
, memory
|
, memory
|
||||||
, monad-control
|
, monad-control
|
||||||
|
|
Loading…
Reference in a new issue