This commit is contained in:
Konstantin Zudov 2015-10-16 01:27:13 +03:00
parent b0ec509d9e
commit b798ac8236
4 changed files with 24 additions and 1 deletions

View File

@ -6,6 +6,7 @@ module Handler.Package
( getPackageR ( getPackageR
, getPackageSnapshotsR , getPackageSnapshotsR
, packagePage , packagePage
, getPackageBadgeR
) where ) where
import Data.Char import Data.Char
@ -13,15 +14,34 @@ import qualified Data.Text as T
import qualified Data.Text.Encoding as T import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy as LT
import Distribution.Package.ModuleForest import Distribution.Package.ModuleForest
import Graphics.Badge.Barrier
import Control.Lens
import Import import Import
import qualified Text.Blaze.Html.Renderer.Text as LT import qualified Text.Blaze.Html.Renderer.Text as LT
import Text.Email.Validate import Text.Email.Validate
import Stackage.Database import Stackage.Database
-- | Page metadata package. -- | Page metadata package.
getPackageR :: PackageName -> Handler Html getPackageR :: PackageName -> Handler Html
getPackageR = packagePage Nothing getPackageR = packagePage Nothing
getPackageBadgeR :: PackageName -> SnapshotBranch -> Handler TypedContent
getPackageBadgeR pname branch = do
snapName <- maybe notFound pure =<< newestSnapshot branch
Entity sid _ <- maybe notFound pure =<< lookupSnapshot snapName
mVersion <- do mSnapPackage <- lookupSnapshotPackage sid (unPackageName pname)
pure (Version . snapshotPackageVersion . entityVal <$> mSnapPackage)
respond typeSvg $ renderStackageBadge snapName mVersion
renderStackageBadge :: SnapName -> Maybe Version -> LByteString
renderStackageBadge (badgeLabel -> label) = \case
Nothing -> renderBadge (flat & right .~ red) label "not available"
Just (Version x) -> renderBadge flat label x
badgeLabel :: SnapName -> Text
badgeLabel (SNNightly _) = "stackage nightly"
badgeLabel (SNLts x _) = "stackage lts-" <> tshow x
packagePage :: Maybe (SnapName, Version) packagePage :: Maybe (SnapName, Version)
-> PackageName -> PackageName
-> Handler Html -> Handler Html

View File

@ -30,6 +30,7 @@
/haddock/#SnapName/*Texts HaddockR GET /haddock/#SnapName/*Texts HaddockR GET
/package/#PackageName PackageR GET /package/#PackageName PackageR GET
/package/#PackageName/snapshots PackageSnapshotsR GET /package/#PackageName/snapshots PackageSnapshotsR GET
/package/#PackageName/badge/#SnapshotBranch PackageBadgeR GET
/package PackageListR GET /package PackageListR GET
/authors AuthorsR GET /authors AuthorsR GET

View File

@ -1,3 +1,4 @@
resolver: lts-3.8 resolver: lts-3.8
extra-deps: extra-deps:
- these-0.6.1.0 - these-0.6.1.0
- barrier-0.1.0

View File

@ -92,6 +92,7 @@ library
base >= 4.8 && < 4.9 base >= 4.8 && < 4.9
, aeson >= 0.8 && < 0.9 , aeson >= 0.8 && < 0.9
, aws >= 0.12 && < 0.13 , aws >= 0.12 && < 0.13
, barrier >= 0.1 && < 0.2
, base16-bytestring >= 0.1 && < 0.2 , base16-bytestring >= 0.1 && < 0.2
, blaze-markup >= 0.7 && < 0.8 , blaze-markup >= 0.7 && < 0.8
, byteable >= 0.1 && < 0.2 , byteable >= 0.1 && < 0.2