mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-02-06 08:07:28 +01:00
Some tweaks for automated doc uploads
This commit is contained in:
parent
5bed251284
commit
4cbf301051
@ -142,7 +142,7 @@ instance Yesod App where
|
|||||||
makeLogger = return . appLogger
|
makeLogger = return . appLogger
|
||||||
|
|
||||||
maximumContentLength _ (Just UploadStackageR) = Just 50000000
|
maximumContentLength _ (Just UploadStackageR) = Just 50000000
|
||||||
maximumContentLength _ (Just UploadHaddockR{}) = Just 50000000
|
maximumContentLength _ (Just UploadHaddockR{}) = Just 100000000
|
||||||
maximumContentLength _ _ = Just 2000000
|
maximumContentLength _ _ = Just 2000000
|
||||||
|
|
||||||
-- How to run database actions.
|
-- How to run database actions.
|
||||||
|
|||||||
@ -18,10 +18,10 @@ form = renderDivs $ areq fileField "tarball containing docs"
|
|||||||
|
|
||||||
getUploadHaddockR, putUploadHaddockR :: PackageSetIdent -> Handler Html
|
getUploadHaddockR, putUploadHaddockR :: PackageSetIdent -> Handler Html
|
||||||
getUploadHaddockR ident = do
|
getUploadHaddockR ident = do
|
||||||
uid <- requireAuthId
|
uid <- requireAuthIdOrToken
|
||||||
Entity sid Stackage {..} <- runDB $ getBy404 $ UniqueStackage ident
|
Entity sid Stackage {..} <- runDB $ getBy404 $ UniqueStackage ident
|
||||||
unless (uid == stackageUser) $ permissionDenied "You do not control this snapshot"
|
unless (uid == stackageUser) $ permissionDenied "You do not control this snapshot"
|
||||||
((res, widget), enctype) <- runFormPost form
|
((res, widget), enctype) <- runFormPostNoToken form
|
||||||
case res of
|
case res of
|
||||||
FormSuccess fileInfo -> do
|
FormSuccess fileInfo -> do
|
||||||
fileSource fileInfo $$ storeWrite (HaddockBundle ident)
|
fileSource fileInfo $$ storeWrite (HaddockBundle ident)
|
||||||
|
|||||||
@ -32,17 +32,7 @@ getUploadStackageR = do
|
|||||||
|
|
||||||
putUploadStackageR :: Handler TypedContent
|
putUploadStackageR :: Handler TypedContent
|
||||||
putUploadStackageR = do
|
putUploadStackageR = do
|
||||||
mtoken <- lookupHeader "authorization"
|
uid <- requireAuthIdOrToken
|
||||||
uid <- case decodeUtf8 <$> mtoken of
|
|
||||||
Nothing -> requireAuthId
|
|
||||||
Just token -> do
|
|
||||||
case mkSlug token of
|
|
||||||
Nothing -> invalidArgs ["Invalid token: " ++ token]
|
|
||||||
Just token' -> do
|
|
||||||
muser <- runDB $ getBy $ UniqueToken token'
|
|
||||||
case muser of
|
|
||||||
Nothing -> invalidArgs ["Unknown token: " ++ token]
|
|
||||||
Just (Entity uid _) -> return uid
|
|
||||||
mfile <- lookupFile fileKey
|
mfile <- lookupFile fileKey
|
||||||
case mfile of
|
case mfile of
|
||||||
Nothing -> invalidArgs ["Upload missing"]
|
Nothing -> invalidArgs ["Upload missing"]
|
||||||
@ -131,6 +121,7 @@ putUploadStackageR = do
|
|||||||
else do
|
else do
|
||||||
done "Error creating index file" ProfileR
|
done "Error creating index file" ProfileR
|
||||||
|
|
||||||
|
addHeader "X-Stackage-Ident" $ toPathPiece ident
|
||||||
redirect $ ProgressR key
|
redirect $ ProgressR key
|
||||||
where
|
where
|
||||||
loop _ Tar.Done = return ()
|
loop _ Tar.Done = return ()
|
||||||
|
|||||||
15
Import.hs
15
Import.hs
@ -10,8 +10,23 @@ import Settings.Development as Import
|
|||||||
import Settings.StaticFiles as Import
|
import Settings.StaticFiles as Import
|
||||||
import Types as Import
|
import Types as Import
|
||||||
import Yesod.Auth as Import
|
import Yesod.Auth as Import
|
||||||
|
import Data.Slug (mkSlug)
|
||||||
|
|
||||||
getHaddockDir :: PackageSetIdent -> Handler FilePath
|
getHaddockDir :: PackageSetIdent -> Handler FilePath
|
||||||
getHaddockDir ident = do
|
getHaddockDir ident = do
|
||||||
master <- getYesod
|
master <- getYesod
|
||||||
return $ haddockRootDir master </> fpFromText (toPathPiece ident)
|
return $ haddockRootDir master </> fpFromText (toPathPiece ident)
|
||||||
|
|
||||||
|
requireAuthIdOrToken :: Handler UserId
|
||||||
|
requireAuthIdOrToken = do
|
||||||
|
mtoken <- lookupHeader "authorization"
|
||||||
|
case decodeUtf8 <$> mtoken of
|
||||||
|
Nothing -> requireAuthId
|
||||||
|
Just token -> do
|
||||||
|
case mkSlug token of
|
||||||
|
Nothing -> invalidArgs ["Invalid token: " ++ token]
|
||||||
|
Just token' -> do
|
||||||
|
muser <- runDB $ getBy $ UniqueToken token'
|
||||||
|
case muser of
|
||||||
|
Nothing -> invalidArgs ["Unknown token: " ++ token]
|
||||||
|
Just (Entity uid _) -> return uid
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user