Skip to content

Commit 142a2d0

Browse files
committed
Finished Path Param Parsers
Removed unclean code
1 parent edfe862 commit 142a2d0

35 files changed

+207
-467
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.papsign.ktor.openapigen.parameters
22

3+
import com.papsign.ktor.openapigen.parameters.parsers.builders.Builder
4+
import com.papsign.ktor.openapigen.parameters.parsers.builders.BuilderFactory
5+
36
interface ParameterStyle<S> where S: ParameterStyle<S>, S: Enum<S> {
47
val name: String
8+
val factory: BuilderFactory<Builder<S>, S>
59
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package com.papsign.ktor.openapigen.parameters
22

3+
import com.papsign.ktor.openapigen.parameters.parsers.builders.Builder
4+
import com.papsign.ktor.openapigen.parameters.parsers.builders.BuilderFactory
5+
import com.papsign.ktor.openapigen.parameters.parsers.builders.path.label.MatrixBuilderFactory
6+
import com.papsign.ktor.openapigen.parameters.parsers.builders.path.matrix.LabelBuilderFactory
7+
import com.papsign.ktor.openapigen.parameters.parsers.builders.path.simple.SimpleBuilderFactory
38

4-
enum class PathParamStyle: ParameterStyle<PathParamStyle> {
5-
DEFAULT, simple, label, matrix
9+
10+
enum class PathParamStyle(override val factory: BuilderFactory<Builder<PathParamStyle>, PathParamStyle>): ParameterStyle<PathParamStyle> {
11+
simple(SimpleBuilderFactory), label(LabelBuilderFactory), matrix(MatrixBuilderFactory)
612
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package com.papsign.ktor.openapigen.parameters
22

3-
enum class QueryParamStyle: ParameterStyle<QueryParamStyle> {
4-
DEFAULT, form, spaceDelimited, pipeDelimited, deepObject
3+
import com.papsign.ktor.openapigen.parameters.parsers.builders.Builder
4+
import com.papsign.ktor.openapigen.parameters.parsers.builders.BuilderFactory
5+
import com.papsign.ktor.openapigen.parameters.parsers.builders.query.deepobject.DeepBuilderFactory
6+
import com.papsign.ktor.openapigen.parameters.parsers.builders.query.delimited.PipeDelimitedBuilderFactory
7+
import com.papsign.ktor.openapigen.parameters.parsers.builders.query.delimited.SpaceDelimitedBuilderFactory
8+
import com.papsign.ktor.openapigen.parameters.parsers.builders.query.form.FormBuilderFactory
9+
10+
enum class QueryParamStyle(override val factory: BuilderFactory<Builder<QueryParamStyle>, QueryParamStyle>): ParameterStyle<QueryParamStyle> {
11+
form(FormBuilderFactory), spaceDelimited(SpaceDelimitedBuilderFactory), pipeDelimited(PipeDelimitedBuilderFactory), deepObject(DeepBuilderFactory)
512
}

src/main/kotlin/com/papsign/ktor/openapigen/parameters/handlers/ModularParameterHander.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@ import com.papsign.ktor.openapigen.modules.ModuleProvider
88
import com.papsign.ktor.openapigen.openapi.Parameter
99
import com.papsign.ktor.openapigen.openapi.ParameterLocation
1010
import com.papsign.ktor.openapigen.openapi.Schema
11-
import com.papsign.ktor.openapigen.parameters.parsers.ParameterParser
11+
import com.papsign.ktor.openapigen.parameters.parsers.builders.Builder
1212
import io.ktor.http.Parameters
13+
import io.ktor.util.toMap
1314
import kotlin.reflect.KFunction
1415
import kotlin.reflect.KParameter
1516
import kotlin.reflect.full.findAnnotation
1617

17-
class ModularParameterHander<T>(val parsers: Map<KParameter, ParameterParser>, val constructor: KFunction<T>) :
18+
class ModularParameterHander<T>(val parsers: Map<KParameter, Builder<*>>, val constructor: KFunction<T>) :
1819
ParameterHandler<T> {
1920

2021
override fun parse(parameters: Parameters): T {
21-
return constructor.callBy(parsers.mapValues { it.value.parse(parameters) })
22+
return constructor.callBy(parsers.mapValues { it.value.build(it.key.name!!, parameters.toMap()) })
2223
}
2324

2425
override fun getParameters(apiGen: OpenAPIGen, provider: ModuleProvider<*>): List<Parameter<*>> {
@@ -40,7 +41,7 @@ class ModularParameterHander<T>(val parsers: Map<KParameter, ParameterParser>, v
4041
it.description = description
4142
it.allowEmptyValue = allowEmptyValues
4243
it.deprecated = deprecated
43-
it.style = parser.queryStyle
44+
it.style = parser.style
4445
it.explode = parser.explode
4546
}
4647
}
@@ -50,7 +51,7 @@ class ModularParameterHander<T>(val parsers: Map<KParameter, ParameterParser>, v
5051
return createParam(param, apiParam.`in`) {
5152
it.description = description
5253
it.deprecated = deprecated
53-
it.style = parser.pathStyle
54+
it.style = parser.style
5455
it.explode = parser.explode
5556
}
5657
}

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/CollectionParameterParser.kt

Lines changed: 0 additions & 71 deletions
This file was deleted.

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/EnumParameterParser.kt

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/InfoParameterParser.kt

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/ObjectParameterParser.kt

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/ParameterParser.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/main/kotlin/com/papsign/ktor/openapigen/parameters/parsers/PrimitiveParameterParser.kt

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)