Track downloads

This commit is contained in:
Michael Snoyman 2014-10-07 11:52:06 +03:00
parent 493c612cbd
commit 25fa854a84
4 changed files with 22 additions and 0 deletions

View File

@ -2,9 +2,11 @@ module Handler.HackageViewSdist where
import Import import Import
import Data.Hackage import Data.Hackage
import Handler.StackageSdist (addDownload)
getHackageViewSdistR :: HackageView -> PackageNameVersion -> Handler TypedContent getHackageViewSdistR :: HackageView -> PackageNameVersion -> Handler TypedContent
getHackageViewSdistR viewName (PackageNameVersion name version) = do getHackageViewSdistR viewName (PackageNameVersion name version) = do
addDownload Nothing (Just viewName) name version
msrc <- sourceHackageViewSdist viewName name version msrc <- sourceHackageViewSdist viewName name version
case msrc of case msrc of
Nothing -> notFound Nothing -> notFound

View File

@ -6,6 +6,7 @@ import Data.Hackage
getStackageSdistR :: PackageSetIdent -> PackageNameVersion -> Handler TypedContent getStackageSdistR :: PackageSetIdent -> PackageNameVersion -> Handler TypedContent
getStackageSdistR ident (PackageNameVersion name version) = do getStackageSdistR ident (PackageNameVersion name version) = do
addDownload (Just ident) Nothing name version
msrc1 <- storeRead (CustomSdist ident name version) msrc1 <- storeRead (CustomSdist ident name version)
msrc <- msrc <-
case msrc1 of case msrc1 of
@ -22,3 +23,13 @@ getStackageSdistR ident (PackageNameVersion name version) = do
, ".tar.gz" , ".tar.gz"
] ]
respondSource "application/x-gzip" $ mapOutput (Chunk . toBuilder) src respondSource "application/x-gzip" $ mapOutput (Chunk . toBuilder) src
addDownload :: Maybe PackageSetIdent
-> Maybe HackageView
-> PackageName
-> Version
-> Handler ()
addDownload downloadIdent downloadView downloadPackage downloadVersion = do
downloadUserAgent <- fmap decodeUtf8 <$> lookupHeader "user-agent"
downloadTimestamp <- liftIO getCurrentTime
runDB $ insert_ Download {..}

View File

@ -39,3 +39,11 @@ Package
name' PackageName sql=name name' PackageName sql=name
version Version version Version
overwrite Bool overwrite Bool
Download
ident PackageSetIdent Maybe
view HackageView Maybe
timestamp UTCTime
package PackageName
version Version
userAgent Text Maybe

View File

@ -69,6 +69,7 @@ library
PatternGuards PatternGuards
StandaloneDeriving StandaloneDeriving
UndecidableInstances UndecidableInstances
RecordWildCards
build-depends: build-depends:
base >= 4 base >= 4