@@ -556,21 +556,28 @@ mkHtmlCore ServerEnv{serverBaseURI, serverBlobStore}
556
556
}
557
557
]
558
558
559
- readParamWithDefaultAnyValid :: (Read a , HasRqData m , Monad m , Functor m , Alternative m ) =>
559
+ readParamWithDefaultAndValid :: (Read a , HasRqData m , Monad m , Functor m , Alternative m ) =>
560
560
a -> (a -> Bool ) -> String -> m a
561
- readParamWithDefaultAnyValid n f queryParam = do
561
+ readParamWithDefaultAndValid n f queryParam = do
562
562
m <- optional (look queryParam)
563
563
let parsed = m >>= readMaybe >>= (\ x -> if f x then Just x else Nothing )
564
564
565
565
return $ fromMaybe n parsed
566
566
567
+ lookupPageSize :: (HasRqData m , Monad m , Functor m , Alternative m ) => Int -> m Int
568
+ lookupPageSize def = readParamWithDefaultAndValid def validPageSize " pageSize"
569
+ where validPageSize x = x > 1 && x <= 200
570
+
571
+ lookupPage :: (HasRqData m , Monad m , Functor m , Alternative m ) => Int -> m Int
572
+ lookupPage def = readParamWithDefaultAndValid def validPage " page"
573
+ where validPage = (>= 1 )
567
574
568
575
serveRecentPage :: DynamicPath -> ServerPartE Response
569
576
serveRecentPage _ = do
570
577
recentPackages <- getRecentPackages
571
578
users <- queryGetUserDb
572
- page <- readParamWithDefaultAnyValid 1 ( >= 1 ) " page "
573
- pageSize <- readParamWithDefaultAnyValid 20 ( >= 1 ) " pageSize "
579
+ page <- lookupPage 1
580
+ pageSize <- lookupPageSize 20
574
581
575
582
let conf = Paging. createConf page pageSize recentPackages
576
583
@@ -580,8 +587,8 @@ mkHtmlCore ServerEnv{serverBaseURI, serverBlobStore}
580
587
serveRecentRSS _ = do
581
588
recentPackages <- getRecentPackages
582
589
users <- queryGetUserDb
583
- page <- readParamWithDefaultAnyValid 1 ( >= 1 ) " page "
584
- pageSize <- readParamWithDefaultAnyValid 20 ( >= 1 ) " pageSize "
590
+ page <- lookupPage 1
591
+ pageSize <- lookupPageSize 20
585
592
now <- liftIO getCurrentTime
586
593
587
594
let conf = Paging. createConf page pageSize recentPackages
@@ -592,8 +599,8 @@ mkHtmlCore ServerEnv{serverBaseURI, serverBlobStore}
592
599
serveRevisionPage _ = do
593
600
revisions <- getRecentRevisions
594
601
users <- queryGetUserDb
595
- page <- readParamWithDefaultAnyValid 1 ( >= 1 ) " page "
596
- pageSize <- readParamWithDefaultAnyValid 40 ( >= 1 ) " pageSize "
602
+ page <- lookupPage 1
603
+ pageSize <- lookupPageSize 40
597
604
598
605
let conf = Paging. createConf page pageSize revisions
599
606
@@ -603,8 +610,8 @@ mkHtmlCore ServerEnv{serverBaseURI, serverBlobStore}
603
610
serveRevisionRSS _ = do
604
611
revisions <- getRecentRevisions
605
612
users <- queryGetUserDb
606
- page <- readParamWithDefaultAnyValid 1 ( >= 1 ) " page "
607
- pageSize <- readParamWithDefaultAnyValid 40 ( >= 1 ) " pageSize "
613
+ page <- lookupPage 1
614
+ pageSize <- lookupPageSize 40
608
615
now <- liftIO getCurrentTime
609
616
610
617
let conf = Paging. createConf page pageSize revisions
0 commit comments