@@ -3,16 +3,11 @@ module Hyper.Form
3
3
, optional
4
4
, required
5
5
, parseForm
6
- , fromForm
7
- , toForm
8
- , class FromForm
9
- , class ToForm
10
- , parseFromForm
11
6
) where
12
7
13
8
import Prelude
14
- import Data.Tuple as Tuple
15
- import Control.IxMonad (ibind , ipure , (:>>=) )
9
+
10
+ import Control.IxMonad (ibind , ipure )
16
11
import Control.Monad.Error.Class (throwError )
17
12
import Data.Array (head )
18
13
import Data.Either (Either (..))
@@ -25,7 +20,9 @@ import Data.Newtype (class Newtype, unwrap)
25
20
import Data.StrMap (lookup )
26
21
import Data.String (Pattern (Pattern), split )
27
22
import Data.Tuple (Tuple )
23
+ import Data.Tuple as Tuple
28
24
import Hyper.Conn (Conn )
25
+ import Hyper.Form.Urlencoded (Options ) as Urlencoded
29
26
import Hyper.Form.Urlencoded (parseUrlencoded )
30
27
import Hyper.Middleware (Middleware )
31
28
import Hyper.Middleware.Class (getConn )
@@ -64,45 +61,22 @@ parseForm ∷ forall m req res c
64
61
. Monad m
65
62
=> Request req m
66
63
=> ReadableBody req m String
67
- => Middleware
64
+ => Urlencoded.Options
65
+ -> Middleware
68
66
m
69
67
(Conn req res c )
70
68
(Conn req res c )
71
69
(Either String Form )
72
- parseForm = do
70
+ parseForm opts = do
73
71
conn <- getConn
74
72
{ headers } <- getRequestData
75
73
body <- readBody
76
74
case lookup " content-type" headers >>= parseContentMediaType of
77
75
Nothing ->
78
76
ipure (Left " Missing or invalid content-type header." )
79
77
Just mediaType | mediaType == applicationFormURLEncoded ->
80
- ipure (Form <$> parseUrlencoded body)
78
+ ipure (Form <$> parseUrlencoded opts body)
81
79
Just mediaType ->
82
80
ipure (Left (" Cannot parse media of type: " <> show mediaType))
83
81
where bind = ibind
84
82
85
-
86
- class ToForm a where
87
- toForm ∷ a → Form
88
-
89
-
90
- class FromForm a where
91
- fromForm ∷ Form → Either String a
92
-
93
-
94
- parseFromForm ∷ forall m req res c a
95
- . Monad m
96
- => Request req m
97
- => ReadableBody req m String
98
- => FromForm a
99
- => Middleware
100
- m
101
- (Conn req res c )
102
- (Conn req res c )
103
- (Either String a )
104
- parseFromForm =
105
- parseForm :>>=
106
- case _ of
107
- Left err -> ipure (Left err)
108
- Right form -> ipure (fromForm form)
0 commit comments