@@ -5,7 +5,6 @@ import Prelude
55import Data.Maybe (Maybe(..))
66import Data.String as String
77import Effect (Effect)
8−import Yoga.HTTP.API.Path (Path, Lit)
98import Yoga.HTTP.API.Route (GET, POST, PUT, Route, Request, buildOpenAPISpec)
109import Yoga.HTTP.API.Route.Encoding (JSON, FormData, MultipartFormData, PlainText, XML, CustomContentType)
1110import Yoga.JSON (writeJSON)
@@ -22,7 +21,7 @@ testRequestContentTypes :: Effect ViTest
2221testRequestContentTypes = describe "Request Content Types" do
2322 _ <- test "JSON request body generates application/json" do
2423 let
25− spec = buildOpenAPISpec @{ createUser :: Route POST (Path (Lit "users")) (Request { body :: JSON User }) (ok :: { body :: User }) }
24+ spec = buildOpenAPISpec @{ createUser :: Route POST "users" (Request { body :: JSON User }) (ok :: { body :: User }) }
2625 { title: "API"
2726 , version: "1.0.0"
2827 , description: Nothing
@@ -35,7 +34,7 @@ testRequestContentTypes = describe "Request Content Types" do
3534
3635 _ <- test "FormData request body generates application/x-www-form-urlencoded" do
3736 let
38− spec = buildOpenAPISpec @{ createUser :: Route POST (Path (Lit "users")) (Request { body :: FormData User }) (ok :: { body :: JSON User }) }
37+ spec = buildOpenAPISpec @{ createUser :: Route POST "users" (Request { body :: FormData User }) (ok :: { body :: JSON User }) }
3938 { title: "API"
4039 , version: "1.0.0"
4140 , description: Nothing
@@ -48,7 +47,7 @@ testRequestContentTypes = describe "Request Content Types" do
4847
4948 _ <- test "MultipartFormData request body generates multipart/form-data" do
5049 let
51− spec = buildOpenAPISpec @{ uploadFile :: Route POST (Path (Lit "upload")) (Request { body :: MultipartFormData FileUpload }) (ok :: { body :: { success :: Boolean } }) }
50+ spec = buildOpenAPISpec @{ uploadFile :: Route POST "upload" (Request { body :: MultipartFormData FileUpload }) (ok :: { body :: { success :: Boolean } }) }
5251 { title: "API"
5352 , version: "1.0.0"
5453 , description: Nothing
@@ -60,7 +59,7 @@ testRequestContentTypes = describe "Request Content Types" do
6059
6160 _ <- test "PlainText request body generates text/plain" do
6261 let
63− spec = buildOpenAPISpec @{ echo :: Route POST (Path (Lit "echo")) (Request { body :: PlainText String }) (ok :: { body :: PlainText String }) }
62+ spec = buildOpenAPISpec @{ echo :: Route POST "echo" (Request { body :: PlainText String }) (ok :: { body :: PlainText String }) }
6463 { title: "API"
6564 , version: "1.0.0"
6665 , description: Nothing
@@ -72,7 +71,7 @@ testRequestContentTypes = describe "Request Content Types" do
7271
7372 _ <- test "XML request body generates application/xml" do
7473 let
75− spec = buildOpenAPISpec @{ updateDoc :: Route PUT (Path (Lit "document")) (Request { body :: XML XmlDocument }) (ok :: { body :: XML XmlDocument }) }
74+ spec = buildOpenAPISpec @{ updateDoc :: Route PUT "document" (Request { body :: XML XmlDocument }) (ok :: { body :: XML XmlDocument }) }
7675 { title: "API"
7776 , version: "1.0.0"
7877 , description: Nothing
@@ -84,7 +83,7 @@ testRequestContentTypes = describe "Request Content Types" do
8483
8584 test "CustomContentType request body generates custom MIME type" do
8685 let
87− spec = buildOpenAPISpec @{ customEndpoint :: Route POST (Path (Lit "custom")) (Request { body :: CustomContentType "application/vnd.api+json" User }) (ok :: { body :: User }) }
86+ spec = buildOpenAPISpec @{ customEndpoint :: Route POST "custom" (Request { body :: CustomContentType "application/vnd.api+json" User }) (ok :: { body :: User }) }
8887 { title: "API"
8988 , version: "1.0.0"
9089 , description: Nothing
@@ -98,7 +97,7 @@ testResponseContentTypes :: Effect ViTest
9897testResponseContentTypes = describe "Response Content Types" do
9998 _ <- test "JSON response body generates application/json" do
10099 let
101− spec = buildOpenAPISpec @{ getUser :: Route GET (Path (Lit "users")) (Request {}) (ok :: { body :: JSON User }) }
100+ spec = buildOpenAPISpec @{ getUser :: Route GET "users" (Request {}) (ok :: { body :: JSON User }) }
102101 { title: "API"
103102 , version: "1.0.0"
104103 , description: Nothing
@@ -110,7 +109,7 @@ testResponseContentTypes = describe "Response Content Types" do
110109
111110 _ <- test "PlainText response body generates text/plain" do
112111 let
113− spec = buildOpenAPISpec @{ getText :: Route GET (Path (Lit "text")) (Request {}) (ok :: { body :: PlainText String }) }
112+ spec = buildOpenAPISpec @{ getText :: Route GET "text" (Request {}) (ok :: { body :: PlainText String }) }
114113 { title: "API"
115114 , version: "1.0.0"
116115 , description: Nothing
@@ -122,7 +121,7 @@ testResponseContentTypes = describe "Response Content Types" do
122121
123122 _ <- test "XML response body generates application/xml" do
124123 let
125− spec = buildOpenAPISpec @{ getDoc :: Route GET (Path (Lit "document")) (Request {}) (ok :: { body :: XML XmlDocument }) }
124+ spec = buildOpenAPISpec @{ getDoc :: Route GET "document" (Request {}) (ok :: { body :: XML XmlDocument }) }
126125 { title: "API"
127126 , version: "1.0.0"
128127 , description: Nothing
@@ -134,7 +133,7 @@ testResponseContentTypes = describe "Response Content Types" do
134133
135134 _ <- test "CustomContentType response body generates custom MIME type" do
136135 let
137− spec = buildOpenAPISpec @{ customGet :: Route GET (Path (Lit "custom")) (Request {}) (ok :: { body :: CustomContentType "application/vnd.api+json" User }) }
136+ spec = buildOpenAPISpec @{ customGet :: Route GET "custom" (Request {}) (ok :: { body :: CustomContentType "application/vnd.api+json" User }) }
138137 { title: "API"
139138 , version: "1.0.0"
140139 , description: Nothing
@@ -146,7 +145,7 @@ testResponseContentTypes = describe "Response Content Types" do
146145
147146 test "Unwrapped response body defaults to application/json for backward compatibility" do
148147 let
149− spec = buildOpenAPISpec @{ getUser :: Route GET (Path (Lit "users")) (Request {}) (ok :: { body :: User }) }
148+ spec = buildOpenAPISpec @{ getUser :: Route GET "users" (Request {}) (ok :: { body :: User }) }
150149 { title: "API"
151150 , version: "1.0.0"
152151 , description: Nothing
@@ -162,10 +161,10 @@ testMixedContentTypes = describe "Mixed Content Types in API" do
162161 let
163162 spec = buildOpenAPISpec
164163 @
165− { createUser :: Route POST (Path (Lit "users")) (Request { body :: JSON User }) (ok :: { body :: JSON User })
166− , uploadFile :: Route POST (Path (Lit "upload")) (Request { body :: MultipartFormData FileUpload }) (ok :: { body :: { success :: Boolean } })
167− , echo :: Route POST (Path (Lit "echo")) (Request { body :: PlainText String }) (ok :: { body :: PlainText String })
168− , getDoc :: Route GET (Path (Lit "document")) (Request {}) (ok :: { body :: XML XmlDocument })
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 })
169168 }
170169 { title: "Multi-Content API"
171170 , version: "1.0.0"