|
10 | 10 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize |
11 | 11 | import io.ktor.http.Headers |
12 | 12 | import io.ktor.http.Parameters |
| 13 | + import io.ktor.http.parseUrlEncodedParameters |
13 | 14 |
|
| 15 | + import java.net.URI |
14 | 16 | import javax.validation.constraints.Max |
15 | 17 | import javax.validation.constraints.Min |
16 | 18 | import javax.validation.constraints.NotNull |
|
91 | 93 | {{#isEnum}} |
92 | 94 | enum class {{enumName}}( |
93 | 95 | val value: |
94 | | - {{#isContainer}}{{{items.dataType}}}{{/isContainer}} |
95 | | - {{^isContainer}}{{dataType}}{{/isContainer}} |
| 96 | + {{#isContainer}}{{{items.dataType}}}{{/isContainer}} |
| 97 | + {{^isContainer}}{{dataType}}{{/isContainer}} |
96 | 98 | ) { |
97 | 99 | {{#allowableValues}} |
98 | 100 | {{#enumVars}} |
99 | 101 | {{name}}({{{value}}}) |
100 | 102 | {{^-last}},{{/-last}} |
| 103 | + {{#-last}};{{/-last}} |
101 | 104 | {{/enumVars}} |
102 | 105 | {{/allowableValues}} |
| 106 | + |
| 107 | + companion object { |
| 108 | + private val map = entries.associateBy { it.value } |
| 109 | + infix fun from( |
| 110 | + value: |
| 111 | + {{#isContainer}}{{{items.dataType}}}{{/isContainer}} |
| 112 | + {{^isContainer}}{{dataType}}{{/isContainer}} |
| 113 | + ) = map[value] |
| 114 | + } |
103 | 115 | } |
104 | 116 | {{/isEnum}} |
105 | 117 | {{/params}} |
|
122 | 134 | {{/params}} |
123 | 135 | {{/nonBodyParams}} |
124 | 136 |
|
| 137 | + {{#isLinkable}} |
| 138 | + companion object { |
| 139 | + @JvmStatic |
| 140 | + fun from(link: {{classname}}Link) : Builder { |
| 141 | + val uri = link.href?.let { URI(it) } |
| 142 | + val params = uri?.query?.parseUrlEncodedParameters() |
| 143 | + |
| 144 | + val builder = Builder() |
| 145 | + |
| 146 | + {{#nonBodyParams}} |
| 147 | + {{#params}} |
| 148 | + val {{{paramName}}} = |
| 149 | + {{#isContainer}} |
| 150 | + params?.getAll("{{{paramName}}}") |
| 151 | + {{#isEnum}} |
| 152 | + ?.mapNotNull { {{enumName}}.from(it) } |
| 153 | + {{/isEnum}} |
| 154 | + {{/isContainer}} |
| 155 | + {{^isCollection}} |
| 156 | + params?.get("{{{paramName}}}") |
| 157 | + {{#isEnum}} |
| 158 | + ?.let { {{enumName}}.from(it) } |
| 159 | + {{/isEnum}} |
| 160 | + {{/isCollection}} |
| 161 | + |
| 162 | + {{{paramName}}}?.let { |
| 163 | + builder.{{{paramName}}}( |
| 164 | + it |
| 165 | + {{#isNumber}}.toBigDecimal(){{/isNumber}} |
| 166 | + {{#isBoolean}}.toBoolean(){{/isBoolean}} |
| 167 | + ) |
| 168 | + } |
| 169 | + {{/params}} |
| 170 | + {{/nonBodyParams}} |
| 171 | + |
| 172 | + return builder |
| 173 | + } |
| 174 | + } |
| 175 | + {{/isLinkable}} |
| 176 | + |
125 | 177 | fun build(): {{classname}}Params { |
126 | 178 | val params = {{classname}}Params( |
127 | 179 | {{#nonBodyParams}} |
|
0 commit comments