@@ -15,6 +15,7 @@ import com.papsign.ktor.openapigen.annotations.Response
1515import com.papsign.ktor.openapigen.annotations.mapping.OpenAPIName
1616import com.papsign.ktor.openapigen.annotations.parameters.HeaderParam
1717import com.papsign.ktor.openapigen.annotations.parameters.PathParam
18+ import com.papsign.ktor.openapigen.annotations.parameters.QueryParam
1819import com.papsign.ktor.openapigen.annotations.properties.description.Description
1920import com.papsign.ktor.openapigen.annotations.type.`object`.example.ExampleProvider
2021import com.papsign.ktor.openapigen.annotations.type.`object`.example.WithExample
@@ -39,22 +40,17 @@ import com.papsign.ktor.openapigen.route.path.normal.post
3940import com.papsign.ktor.openapigen.route.response.respond
4041import com.papsign.ktor.openapigen.schema.namer.DefaultSchemaNamer
4142import com.papsign.ktor.openapigen.schema.namer.SchemaNamer
42- import io.ktor.application.application
43- import io.ktor.application.call
44- import io.ktor.application.install
45- import io.ktor.features.ContentNegotiation
46- import io.ktor.features.StatusPages
47- import io.ktor.features.origin
48- import io.ktor.http.HttpStatusCode
49- import io.ktor.jackson.jackson
50- import io.ktor.request.host
51- import io.ktor.request.port
52- import io.ktor.response.respond
53- import io.ktor.response.respondRedirect
54- import io.ktor.routing.get
55- import io.ktor.routing.routing
56- import io.ktor.server.engine.embeddedServer
57- import io.ktor.server.netty.Netty
43+ import io.ktor.application.*
44+ import io.ktor.features.*
45+ import io.ktor.http.*
46+ import io.ktor.jackson.*
47+ import io.ktor.request.*
48+ import io.ktor.response.*
49+ import io.ktor.routing.*
50+ import io.ktor.server.engine.*
51+ import io.ktor.server.netty.*
52+ import java.time.*
53+ import java.util.*
5854import kotlin.reflect.KType
5955
6056object TestServer {
@@ -98,6 +94,9 @@ object TestServer {
9894
9995 enable(SerializationFeature .WRAP_EXCEPTIONS , SerializationFeature .INDENT_OUTPUT )
10096
97+ disable(SerializationFeature .WRITE_DATES_AS_TIMESTAMPS )
98+ disable(DeserializationFeature .ADJUST_DATES_TO_CONTEXT_TIME_ZONE )
99+
101100 setSerializationInclusion(JsonInclude .Include .NON_NULL )
102101
103102 setDefaultPrettyPrinter(DefaultPrettyPrinter ().apply {
@@ -273,6 +272,53 @@ object TestServer {
273272 }
274273 }
275274 }
275+
276+
277+ route(" datetime" ) {
278+ route(" date" ) {
279+ get<LocalDateQuery , LocalDateResponse > { params ->
280+ respond(LocalDateResponse (params.date))
281+ }
282+ route(" optional" ) {
283+ get<LocalDateOptionalQuery , LocalDateResponse > { params ->
284+ println (params)
285+ respond(LocalDateResponse (params.date))
286+ }
287+ }
288+ }
289+ route(" local-time" ) {
290+ get<LocalTimeQuery , LocalTimeResponse > { params ->
291+ respond(LocalTimeResponse (params.time))
292+ }
293+ }
294+ route(" offset-time" ) {
295+ get<OffsetTimeQuery , OffsetTimeResponse > { params ->
296+ respond(OffsetTimeResponse (params.time))
297+ }
298+ }
299+
300+ route(" local-date-time" ) {
301+ get<LocalDateTimeQuery , LocalDateTimeResponse > { params ->
302+ respond(LocalDateTimeResponse (params.date))
303+ }
304+ }
305+ route(" offset-date-time" ) {
306+ get<OffsetDateTimeQuery , OffsetDateTimeResponse > { params ->
307+ respond(OffsetDateTimeResponse (params.date))
308+ }
309+ }
310+ route(" zoned-date-time" ) {
311+ get<ZonedDateTimeQuery , ZonedDateTimeResponse > { params ->
312+ println (ZonedDateTime .now())
313+ respond(ZonedDateTimeResponse (params.date))
314+ }
315+ }
316+ route(" instant" ) {
317+ get<InstantQuery , InstantResponse > { params ->
318+ respond(InstantResponse (params.date))
319+ }
320+ }
321+ }
276322 }
277323 }.start(true )
278324 }
@@ -346,4 +392,24 @@ object TestServer {
346392 }
347393
348394 data class APIPrincipal (val a : String , val b : String )
395+
396+
397+ @Request(" A LocalDate Request" )
398+ data class LocalDateQuery (@QueryParam(" LocalDate" ) val date : LocalDate )
399+ data class LocalDateOptionalQuery (@QueryParam(" LocalDate" ) val date : LocalDate ? )
400+ data class LocalDateTimeQuery (@QueryParam(" LocalDateTime" ) val date : LocalDateTime )
401+ data class OffsetDateTimeQuery (@QueryParam(" OffsetDateTime" ) val date : OffsetDateTime )
402+ data class ZonedDateTimeQuery (@QueryParam(" OffsetDateTime" ) val date : ZonedDateTime )
403+ data class InstantQuery (@QueryParam(" Instant" ) val date : Instant )
404+
405+ data class LocalTimeQuery (@QueryParam(" LocalTime" ) val time : LocalTime )
406+ data class OffsetTimeQuery (@QueryParam(" OffsetTime" ) val time : OffsetTime )
407+
408+ data class LocalDateResponse (val date : LocalDate ? )
409+ data class LocalDateTimeResponse (val date : LocalDateTime ? )
410+ data class OffsetDateTimeResponse (val date : OffsetDateTime ? )
411+ data class ZonedDateTimeResponse (val date : ZonedDateTime ? )
412+ data class InstantResponse (val instant : Instant )
413+ data class LocalTimeResponse (val time : LocalTime ? )
414+ data class OffsetTimeResponse (val time : OffsetTime ? )
349415}
0 commit comments