chore(users/Profpatsch): misc small improvements

Change-Id: I8fc128391196da22f03bac76a6c621f2cee73334
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11084
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This commit is contained in:
Profpatsch 2024-03-03 13:51:30 +01:00 committed by clbot
parent 5a086020cb
commit c869f9627e
3 changed files with 8 additions and 38 deletions

View file

@ -108,7 +108,7 @@ parseMultipartOrThrow throwF parser req = do
Success a -> pure a
-- | Parse the field out of the multipart message
field :: Applicative m => ByteString -> FieldParser ByteString a -> MultipartParseT backend m a
field :: (Applicative m) => ByteString -> FieldParser ByteString a -> MultipartParseT backend m a
field fieldName fieldParser = MultipartParseT $ \mp ->
mp.inputs
& findMaybe (\input -> if fst input == fieldName then Just (snd input) else Nothing)
@ -118,7 +118,7 @@ field fieldName fieldParser = MultipartParseT $ \mp ->
& pure
-- | Parse the field out of the multipart message
field' :: Applicative m => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (FormValidation a)
field' :: (Applicative m) => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (FormValidation a)
field' fieldName fieldParser = MultipartParseT $ \mp ->
mp.inputs
& findMaybe (\input -> if fst input == fieldName then Just $ snd input else Nothing)
@ -136,15 +136,15 @@ field' fieldName fieldParser = MultipartParseT $ \mp ->
& pure
-- | Parse the field out of the multipart message, and into a 'Label' of the given name.
fieldLabel :: forall lbl backend m a. Applicative m => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (Label lbl a)
fieldLabel :: forall lbl backend m a. (Applicative m) => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (Label lbl a)
fieldLabel fieldName fieldParser = label @lbl <$> field fieldName fieldParser
-- | Parse the field out of the multipart message, and into a 'Label' of the given name.
fieldLabel' :: forall lbl backend m a. Applicative m => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (FormValidation (Label lbl a))
fieldLabel' :: forall lbl backend m a. (Applicative m) => ByteString -> FieldParser ByteString a -> MultipartParseT backend m (FormValidation (Label lbl a))
fieldLabel' fieldName fieldParser = fmap (label @lbl) <$> field' fieldName fieldParser
-- | parse all fields out of the multipart message, with the same parser
allFields :: Applicative m => FieldParser (T2 "key" ByteString "value" ByteString) b -> MultipartParseT backend m [b]
allFields :: (Applicative m) => FieldParser (T2 "key" ByteString "value" ByteString) b -> MultipartParseT backend m [b]
allFields fieldParser = MultipartParseT $ \mp ->
mp.inputs
<&> tupToT2 @"key" @"value"
@ -157,7 +157,7 @@ tupToT2 (a, b) = T2 (label a) (label b)
-- | Parse a file by name out of the multipart message
file ::
Applicative m =>
(Applicative m) =>
ByteString ->
MultipartParseT backend m (MultipartFile Lazy.ByteString)
file fieldName = MultipartParseT $ \mp ->
@ -172,14 +172,14 @@ file fieldName = MultipartParseT $ \mp ->
-- | Return all files from the multipart message
allFiles ::
Applicative m =>
(Applicative m) =>
MultipartParseT backend m [MultipartFile Lazy.ByteString]
allFiles = MultipartParseT $ \mp -> do
pure $ Success $ mp.files
-- | Ensure there is exactly one file and return it (ignoring the field name)
exactlyOneFile ::
Applicative m =>
(Applicative m) =>
MultipartParseT backend m (MultipartFile Lazy.ByteString)
exactlyOneFile = MultipartParseT $ \mp ->
mp.files