From 6e1cdfe7c5a5bceeae2b2eb34ed7f0e1907069aa Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 11 Apr 2021 13:31:53 -0400 Subject: [PATCH] added parameter schemas --- .../org/leafygreens/kompendium/Kompendium.kt | 1 - .../models/OpenApiSpecParameterSchema.kt | 14 ++++++++++ .../models/OpenApiSpecReferencable.kt | 5 +++- .../leafygreens/kompendium/util/TestData.kt | 27 +++++++++++++++++++ kompendium/src/test/resources/petstore.json | 27 +++++++++++++++++++ 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecParameterSchema.kt diff --git a/kompendium/src/main/kotlin/org/leafygreens/kompendium/Kompendium.kt b/kompendium/src/main/kotlin/org/leafygreens/kompendium/Kompendium.kt index c0ff31312..88ddef1ea 100644 --- a/kompendium/src/main/kotlin/org/leafygreens/kompendium/Kompendium.kt +++ b/kompendium/src/main/kotlin/org/leafygreens/kompendium/Kompendium.kt @@ -1,6 +1,5 @@ package org.leafygreens.kompendium -import java.net.URI import org.leafygreens.kompendium.models.OpenApiSpec class Kompendium { diff --git a/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecParameterSchema.kt b/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecParameterSchema.kt new file mode 100644 index 000000000..beca3826d --- /dev/null +++ b/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecParameterSchema.kt @@ -0,0 +1,14 @@ +package org.leafygreens.kompendium.models + +sealed class OpenApiSpecParameterSchema( + val type: String, +) + +data class OpenApiSpecParameterSchemaArray( + val items: T +) : OpenApiSpecParameterSchema("array") + +data class OpenApiSpecParameterSchemaString( + val default: String, + val `enum`: Set? = null +) : OpenApiSpecParameterSchema("string") diff --git a/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecReferencable.kt b/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecReferencable.kt index 206a3ec99..fa37cae83 100644 --- a/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecReferencable.kt +++ b/kompendium/src/main/kotlin/org/leafygreens/kompendium/models/OpenApiSpecReferencable.kt @@ -27,7 +27,10 @@ data class OpenApiSpecParameter( val description: String?, val required: Boolean = true, val deprecated: Boolean = false, - val allowEmptyValue: Boolean = false + val allowEmptyValue: Boolean = false, + val style: String? = null, + val explode: Boolean? = false, + val schema: OpenApiSpecParameterSchema? = null ) : OpenApiSpecReferencable() data class OpenApiSpecRequest( diff --git a/kompendium/src/test/kotlin/org/leafygreens/kompendium/util/TestData.kt b/kompendium/src/test/kotlin/org/leafygreens/kompendium/util/TestData.kt index 2741a47dd..5cfceed40 100644 --- a/kompendium/src/test/kotlin/org/leafygreens/kompendium/util/TestData.kt +++ b/kompendium/src/test/kotlin/org/leafygreens/kompendium/util/TestData.kt @@ -8,6 +8,9 @@ import org.leafygreens.kompendium.models.OpenApiSpecInfo import org.leafygreens.kompendium.models.OpenApiSpecInfoContact import org.leafygreens.kompendium.models.OpenApiSpecInfoLicense import org.leafygreens.kompendium.models.OpenApiSpecMediaType +import org.leafygreens.kompendium.models.OpenApiSpecParameter +import org.leafygreens.kompendium.models.OpenApiSpecParameterSchemaArray +import org.leafygreens.kompendium.models.OpenApiSpecParameterSchemaString import org.leafygreens.kompendium.models.OpenApiSpecPathItem import org.leafygreens.kompendium.models.OpenApiSpecPathItemOperation import org.leafygreens.kompendium.models.OpenApiSpecReferenceObject @@ -139,6 +142,30 @@ object TestData { ), `x-codegen-request-body-name` = "body" ) + ), + "/pet/findByStatus" to OpenApiSpecPathItem( + get = OpenApiSpecPathItemOperation( + tags = setOf("pet"), + summary = "Find Pets by status", + description = "Multiple status values can be provided with comma separated strings", + operationId = "findPetsByStatus", + parameters = listOf( + OpenApiSpecParameter( + name = "status", + `in` = "query", + description = "Status values that need to be considered for filter", + required = true, + style = "form", + explode = true, + schema = OpenApiSpecParameterSchemaArray( + items = OpenApiSpecParameterSchemaString( + default = "available", + `enum` = setOf("available", "pending", "sold") + ) + ) + ) + ) + ) ) ) ) diff --git a/kompendium/src/test/resources/petstore.json b/kompendium/src/test/resources/petstore.json index 9ef6c103d..fa800798f 100644 --- a/kompendium/src/test/resources/petstore.json +++ b/kompendium/src/test/resources/petstore.json @@ -93,6 +93,33 @@ } ], "x-codegen-request-body-name" : "body" } + }, + "/pet/findByStatus" : { + "get" : { + "tags" : [ "pet" ], + "summary" : "Find Pets by status", + "description" : "Multiple status values can be provided with comma separated strings", + "operationId" : "findPetsByStatus", + "parameters" : [ { + "name" : "status", + "in" : "query", + "description" : "Status values that need to be considered for filter", + "required" : true, + "deprecated" : false, + "allowEmptyValue" : false, + "style" : "form", + "explode" : true, + "schema" : { + "items" : { + "default" : "available", + "enum" : [ "available", "pending", "sold" ], + "type" : "string" + }, + "type" : "array" + } + } ], + "deprecated" : false + } } }, "security" : { },