Skip to content

Commit 058aa82

Browse files
Good enough Jsoninter OpenAPI implementation
1 parent df4c711 commit 058aa82

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

modules/server/src/main/scala/io/branchtalk/openapi/OpenAPIServer.scala

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,21 @@ object OpenAPIServer {
113113
case (e: ExampleSingleValue, out) => encoderExampleSingleValue.encodeValue(e, out)
114114
case (e: ExampleMultipleValue, out) => encodeExampleMultipleValues.encodeValue(e, out)
115115
}
116-
implicit val encoderSchemaType: JsCodec[SchemaType] = JsonCodecMaker.make // TODO: from string
117-
implicit val encoderSchema: JsCodec[Schema] = JsonCodecMaker.make
118-
implicit val encoderHeader: JsCodec[Header] = JsonCodecMaker.make
119-
implicit val encoderExample: JsCodec[Example] = JsonCodecMaker.make
120-
implicit val encoderResponse: JsCodec[Response] = JsonCodecMaker.make
121-
implicit val encoderLink: JsCodec[Link] = JsonCodecMaker.make
122-
implicit val encoderCallback: JsCodec[Callback] = JsonCodecMaker.make // TODO: skip one level
123-
implicit val encoderEncoding: JsCodec[Encoding] = JsonCodecMaker.make
124-
implicit val encoderMediaType: JsCodec[MediaType] = JsonCodecMaker.make
125-
implicit val encoderRequestBody: JsCodec[RequestBody] = JsonCodecMaker.make
126-
implicit val encoderParameterStyle: JsCodec[ParameterStyle] = JsonCodecMaker.make // TODO: from string
127-
implicit val encoderParameterIn: JsCodec[ParameterIn] = JsonCodecMaker.make
128-
implicit val encoderParameter: JsCodec[Parameter] = JsonCodecMaker.make
116+
implicit val encoderSchemaType: JsCodec[SchemaType] = summonCodec[String](JsonCodecMaker.make).map(_ => ???)(_.value)
117+
implicit val encoderSchema: JsCodec[Schema] = JsonCodecMaker.make
118+
implicit val encoderHeader: JsCodec[Header] = JsonCodecMaker.make
119+
implicit val encoderExample: JsCodec[Example] = JsonCodecMaker.make
120+
implicit val encoderResponse: JsCodec[Response] = JsonCodecMaker.make
121+
implicit val encoderLink: JsCodec[Link] = JsonCodecMaker.make
122+
implicit lazy val encoderCallback: JsCodec[Callback] =
123+
encodeListMap(encoderReferenceOr[PathItem]).map[Callback](_ => ???)(_.pathItems)
124+
implicit val encoderEncoding: JsCodec[Encoding] = JsonCodecMaker.make
125+
implicit val encoderMediaType: JsCodec[MediaType] = JsonCodecMaker.make
126+
implicit val encoderRequestBody: JsCodec[RequestBody] = JsonCodecMaker.make
127+
implicit val encoderParameterStyle: JsCodec[ParameterStyle] =
128+
summonCodec[String](JsonCodecMaker.make).map(_ => ???)(_.value)
129+
implicit val encoderParameterIn: JsCodec[ParameterIn] = JsonCodecMaker.make
130+
implicit val encoderParameter: JsCodec[Parameter] = JsonCodecMaker.make
129131
implicit val encoderResponseMap: JsCodec[ListMap[ResponsesKey, ReferenceOr[Response]]] =
130132
summonCodec[Map[String, ReferenceOr[Response]]](
131133
JsonCodecMaker.make(CodecMakerConfig.withAllowRecursiveTypes(true))
@@ -158,8 +160,9 @@ object OpenAPIServer {
158160
implicit val encoderInfo: JsCodec[Info] = JsonCodecMaker.make
159161
implicit val encoderContact: JsCodec[Contact] = JsonCodecMaker.make
160162
implicit val encoderLicense: JsCodec[License] = JsonCodecMaker.make
161-
implicit val encoderOpenAPI: JsCodec[OpenAPI] = JsonCodecMaker.make
162-
implicit val encoderDiscriminator: JsCodec[Discriminator] = JsonCodecMaker.make
163+
implicit val encoderOpenAPI: JsCodec[OpenAPI] =
164+
JsonCodecMaker.make(CodecMakerConfig.withTransientDefault(false).withTransientNone(true))
165+
implicit val encoderDiscriminator: JsCodec[Discriminator] = JsonCodecMaker.make
163166

164167
implicit def encodeList[T: JsCodec]: JsCodec[List[T]] = JsEncoderOnly[List[T]] {
165168
case (Nil, out) =>

0 commit comments

Comments
 (0)