@@ -5,7 +5,7 @@ import Prelude
55import Data.Maybe (Maybe(..))
66import Data.String as String
77import Effect (Effect)
8−import Yoga.HTTP.API.Route (GET, POST, PUT, Route, Request, buildOpenAPISpec)
8+import Yoga.HTTP.API.Route (GET, POST, PUT, Route, buildOpenAPISpec)
99import Yoga.HTTP.API.Route.Encoding (JSON, FormData, MultipartFormData, PlainText, XML, CustomContentType)
1010import Yoga.JSON (writeJSON)
1111import ViTest (ViTest, describe, test)
@@ -21,7 +21,7 @@ testRequestContentTypes :: Effect ViTest
2121testRequestContentTypes = describe "Request Content Types" do
2222 _ <- test "JSON request body generates application/json" do
2323 let
24− spec = buildOpenAPISpec @{ createUser :: Route POST "users" (Request { body :: JSON User }) (ok :: { body :: User }) }
24+ spec = buildOpenAPISpec @{ createUser :: Route POST "users" { body :: JSON User } (ok :: { body :: User }) }
2525 { title: "API"
2626 , version: "1.0.0"
2727 , description: Nothing
@@ -34,7 +34,7 @@ testRequestContentTypes = describe "Request Content Types" do
3434
3535 _ <- test "FormData request body generates application/x-www-form-urlencoded" do
3636 let
37− spec = buildOpenAPISpec @{ createUser :: Route POST "users" (Request { body :: FormData User }) (ok :: { body :: JSON User }) }
37+ spec = buildOpenAPISpec @{ createUser :: Route POST "users" { body :: FormData User } (ok :: { body :: JSON User }) }
3838 { title: "API"
3939 , version: "1.0.0"
4040 , description: Nothing
@@ -47,7 +47,7 @@ testRequestContentTypes = describe "Request Content Types" do
4747
4848 _ <- test "MultipartFormData request body generates multipart/form-data" do
4949 let
50− spec = buildOpenAPISpec @{ uploadFile :: Route POST "upload" (Request { body :: MultipartFormData FileUpload }) (ok :: { body :: { success :: Boolean } }) }
50+ spec = buildOpenAPISpec @{ uploadFile :: Route POST "upload" { body :: MultipartFormData FileUpload } (ok :: { body :: { success :: Boolean } }) }
5151 { title: "API"
5252 , version: "1.0.0"
5353 , description: Nothing
@@ -59,7 +59,7 @@ testRequestContentTypes = describe "Request Content Types" do
5959
6060 _ <- test "PlainText request body generates text/plain" do
6161 let
62− spec = buildOpenAPISpec @{ echo :: Route POST "echo" (Request { body :: PlainText String }) (ok :: { body :: PlainText String }) }
62+ spec = buildOpenAPISpec @{ echo :: Route POST "echo" { body :: PlainText String } (ok :: { body :: PlainText String }) }
6363 { title: "API"
6464 , version: "1.0.0"
6565 , description: Nothing
@@ -71,7 +71,7 @@ testRequestContentTypes = describe "Request Content Types" do
7171
7272 _ <- test "XML request body generates application/xml" do
7373 let
74− spec = buildOpenAPISpec @{ updateDoc :: Route PUT "document" (Request { body :: XML XmlDocument }) (ok :: { body :: XML XmlDocument }) }
74+ spec = buildOpenAPISpec @{ updateDoc :: Route PUT "document" { body :: XML XmlDocument } (ok :: { body :: XML XmlDocument }) }
7575 { title: "API"
7676 , version: "1.0.0"
7777 , description: Nothing
@@ -83,7 +83,7 @@ testRequestContentTypes = describe "Request Content Types" do
8383
8484 test "CustomContentType request body generates custom MIME type" do
8585 let
86− spec = buildOpenAPISpec @{ customEndpoint :: Route POST "custom" (Request { body :: CustomContentType "application/vnd.api+json" User }) (ok :: { body :: User }) }
86+ spec = buildOpenAPISpec @{ customEndpoint :: Route POST "custom" { body :: CustomContentType "application/vnd.api+json" User } (ok :: { body :: User }) }
8787 { title: "API"
8888 , version: "1.0.0"
8989 , description: Nothing
@@ -97,7 +97,7 @@ testResponseContentTypes :: Effect ViTest
9797testResponseContentTypes = describe "Response Content Types" do
9898 _ <- test "JSON response body generates application/json" do
9999 let
100− spec = buildOpenAPISpec @{ getUser :: Route GET "users" (Request {}) (ok :: { body :: JSON User }) }
100+ spec = buildOpenAPISpec @{ getUser :: Route GET "users" {} (ok :: { body :: JSON User }) }
101101 { title: "API"
102102 , version: "1.0.0"
103103 , description: Nothing
@@ -109,7 +109,7 @@ testResponseContentTypes = describe "Response Content Types" do
109109
110110 _ <- test "PlainText response body generates text/plain" do
111111 let
112− spec = buildOpenAPISpec @{ getText :: Route GET "text" (Request {}) (ok :: { body :: PlainText String }) }
112+ spec = buildOpenAPISpec @{ getText :: Route GET "text" {} (ok :: { body :: PlainText String }) }
113113 { title: "API"
114114 , version: "1.0.0"
115115 , description: Nothing
@@ -121,7 +121,7 @@ testResponseContentTypes = describe "Response Content Types" do
121121
122122 _ <- test "XML response body generates application/xml" do
123123 let
124− spec = buildOpenAPISpec @{ getDoc :: Route GET "document" (Request {}) (ok :: { body :: XML XmlDocument }) }
124+ spec = buildOpenAPISpec @{ getDoc :: Route GET "document" {} (ok :: { body :: XML XmlDocument }) }
125125 { title: "API"
126126 , version: "1.0.0"
127127 , description: Nothing
@@ -133,7 +133,7 @@ testResponseContentTypes = describe "Response Content Types" do
133133
134134 _ <- test "CustomContentType response body generates custom MIME type" do
135135 let
136− spec = buildOpenAPISpec @{ customGet :: Route GET "custom" (Request {}) (ok :: { body :: CustomContentType "application/vnd.api+json" User }) }
136+ spec = buildOpenAPISpec @{ customGet :: Route GET "custom" {} (ok :: { body :: CustomContentType "application/vnd.api+json" User }) }
137137 { title: "API"
138138 , version: "1.0.0"
139139 , description: Nothing
@@ -145,7 +145,7 @@ testResponseContentTypes = describe "Response Content Types" do
145145
146146 test "Unwrapped response body defaults to application/json for backward compatibility" do
147147 let
148− spec = buildOpenAPISpec @{ getUser :: Route GET "users" (Request {}) (ok :: { body :: User }) }
148+ spec = buildOpenAPISpec @{ getUser :: Route GET "users" {} (ok :: { body :: User }) }
149149 { title: "API"
150150 , version: "1.0.0"
151151 , description: Nothing
@@ -161,10 +161,10 @@ testMixedContentTypes = describe "Mixed Content Types in API" do
161161 let
162162 spec = buildOpenAPISpec
163163 @
164− { createUser :: Route POST "users" (Request { body :: JSON User }) (ok :: { body :: JSON User })
165− , uploadFile :: Route POST "upload" (Request { body :: MultipartFormData FileUpload }) (ok :: { body :: { success :: Boolean } })
166− , echo :: Route POST "echo" (Request { body :: PlainText String }) (ok :: { body :: PlainText String })
167− , getDoc :: Route GET "document" (Request {}) (ok :: { body :: XML XmlDocument })
164+ { createUser :: Route POST "users" { body :: JSON User } (ok :: { body :: JSON User })
165+ , uploadFile :: Route POST "upload" { body :: MultipartFormData FileUpload } (ok :: { body :: { success :: Boolean } })
166+ , echo :: Route POST "echo" { body :: PlainText String } (ok :: { body :: PlainText String })
167+ , getDoc :: Route GET "document" {} (ok :: { body :: XML XmlDocument })
168168 }
169169 { title: "Multi-Content API"
170170 , version: "1.0.0"