Accept POST requests from HTML forms
This commit is contained in:
@@ -9,6 +9,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Reload database schema on SIGHUP - @begriffs
|
- Reload database schema on SIGHUP - @begriffs
|
||||||
- Support "-" in column names - @ruslantalpa
|
- Support "-" in column names - @ruslantalpa
|
||||||
- Support column/node renaming `alias:column` - @ruslantalpa
|
- Support column/node renaming `alias:column` - @ruslantalpa
|
||||||
|
- Accept posts from HTML forms - @begriffs
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Omit Content-Type header for empty body - @begriffs
|
- Omit Content-Type header for empty body - @begriffs
|
||||||
|
|||||||
@@ -122,6 +122,10 @@ userApiRequest schema req reqBody =
|
|||||||
Nothing -> PayloadParseError "All lines must have same number of fields"
|
Nothing -> PayloadParseError "All lines must have same number of fields"
|
||||||
Just json -> PayloadJSON json)
|
Just json -> PayloadJSON json)
|
||||||
(CSV.decodeByName reqBody)
|
(CSV.decodeByName reqBody)
|
||||||
|
Left "application/x-www-form-urlencoded" ->
|
||||||
|
PayloadJSON . UniformObjects . V.singleton . M.fromList
|
||||||
|
. map (cs *** JSON.String . cs) . parseSimpleQuery
|
||||||
|
$ cs reqBody
|
||||||
Left accept ->
|
Left accept ->
|
||||||
PayloadParseError $
|
PayloadParseError $
|
||||||
"Content-type not acceptable: " <> accept
|
"Content-type not acceptable: " <> accept
|
||||||
|
|||||||
@@ -55,6 +55,15 @@ spec = do
|
|||||||
, matchHeaders = ["Content-Type" <:> "application/json; charset=utf-8", "Location" <:> "/projects?id=eq.6"]
|
, matchHeaders = ["Content-Type" <:> "application/json; charset=utf-8", "Location" <:> "/projects?id=eq.6"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context "from an html form" $
|
||||||
|
it "accepts disparate json types" $ do
|
||||||
|
p <- request methodPost "/menagerie"
|
||||||
|
[("Content-Type", "application/x-www-form-urlencoded")]
|
||||||
|
("integer=7&double=2.71828&varchar=forms+are+fun&" <>
|
||||||
|
"boolean=false&date=1900-01-01&money=$3.99&enum=foo")
|
||||||
|
liftIO $ do
|
||||||
|
simpleBody p `shouldBe` ""
|
||||||
|
simpleStatus p `shouldBe` created201
|
||||||
|
|
||||||
context "with no pk supplied" $ do
|
context "with no pk supplied" $ do
|
||||||
context "into a table with auto-incrementing pk" $
|
context "into a table with auto-incrementing pk" $
|
||||||
|
|||||||
Reference in New Issue
Block a user