@@ -10,7 +10,7 @@ import sttp.apispec.internal.JsonSchemaCirceEncoders
10
10
import scala .collection .immutable .ListMap
11
11
12
12
trait InternalSttpOpenAPICirceEncoders extends JsonSchemaCirceEncoders {
13
- implicit val encoderReference : Encoder [Reference ] = deriveEncoder[Reference ]
13
+ implicit val encoderReference : Encoder [Reference ] = deriveEncoder[Reference ].dropNulls
14
14
implicit def encoderReferenceOr [T : Encoder ]: Encoder [ReferenceOr [T ]] = {
15
15
case Left (Reference (ref, summary, description)) =>
16
16
Json
@@ -27,25 +27,25 @@ trait InternalSttpOpenAPICirceEncoders extends JsonSchemaCirceEncoders {
27
27
// #79: all OAuth flow object MUST include a scopes field, but it MAY be empty.
28
28
implicit def encodeListMap : Encoder [ListMap [String , String ]] = doEncodeListMap(nullWhenEmpty = false )
29
29
30
- deriveEncoder[OAuthFlow ].mapJsonObject(expandExtensions)
30
+ deriveEncoder[OAuthFlow ].dropNullsExpandExtensions
31
31
}
32
- implicit val encoderOAuthFlows : Encoder [OAuthFlows ] = deriveEncoder[OAuthFlows ].mapJsonObject(expandExtensions)
32
+ implicit val encoderOAuthFlows : Encoder [OAuthFlows ] = deriveEncoder[OAuthFlows ].dropNullsExpandExtensions
33
33
implicit val encoderSecurityScheme : Encoder [SecurityScheme ] =
34
- deriveEncoder[SecurityScheme ].mapJsonObject(expandExtensions)
34
+ deriveEncoder[SecurityScheme ].dropNullsExpandExtensions
35
35
36
36
implicit val encoderHeader : Encoder [Header ] = deriveEncoder[Header ]
37
- implicit val encoderExample : Encoder [Example ] = deriveEncoder[Example ].mapJsonObject(expandExtensions)
38
- implicit val encoderResponse : Encoder [Response ] = deriveEncoder[Response ].mapJsonObject(expandExtensions)
39
- implicit val encoderLink : Encoder [Link ] = deriveEncoder[Link ].mapJsonObject(expandExtensions)
37
+ implicit val encoderExample : Encoder [Example ] = deriveEncoder[Example ].dropNullsExpandExtensions
38
+ implicit val encoderResponse : Encoder [Response ] = deriveEncoder[Response ].dropNullsExpandExtensions
39
+ implicit val encoderLink : Encoder [Link ] = deriveEncoder[Link ].dropNullsExpandExtensions
40
40
implicit val encoderCallback : Encoder [Callback ] = Encoder .instance { callback =>
41
41
Json .obj(callback.pathItems.map { case (path, pathItem) => path -> pathItem.asJson }.toList: _* )
42
42
}
43
- implicit val encoderEncoding : Encoder [Encoding ] = deriveEncoder[Encoding ].mapJsonObject(expandExtensions)
44
- implicit val encoderMediaType : Encoder [MediaType ] = deriveEncoder[MediaType ].mapJsonObject(expandExtensions)
45
- implicit val encoderRequestBody : Encoder [RequestBody ] = deriveEncoder[RequestBody ].mapJsonObject(expandExtensions)
43
+ implicit val encoderEncoding : Encoder [Encoding ] = deriveEncoder[Encoding ].dropNullsExpandExtensions
44
+ implicit val encoderMediaType : Encoder [MediaType ] = deriveEncoder[MediaType ].dropNullsExpandExtensions
45
+ implicit val encoderRequestBody : Encoder [RequestBody ] = deriveEncoder[RequestBody ].dropNullsExpandExtensions
46
46
implicit val encoderParameterStyle : Encoder [ParameterStyle ] = { e => Encoder .encodeString(e.value) }
47
47
implicit val encoderParameterIn : Encoder [ParameterIn ] = { e => Encoder .encodeString(e.value) }
48
- implicit val encoderParameter : Encoder [Parameter ] = deriveEncoder[Parameter ].mapJsonObject(expandExtensions)
48
+ implicit val encoderParameter : Encoder [Parameter ] = deriveEncoder[Parameter ].dropNullsExpandExtensions
49
49
implicit val encoderResponseMap : Encoder [ListMap [ResponsesKey , ReferenceOr [Response ]]] =
50
50
(responses : ListMap [ResponsesKey , ReferenceOr [Response ]]) => {
51
51
val fields = responses.map {
@@ -70,22 +70,21 @@ trait InternalSttpOpenAPICirceEncoders extends JsonSchemaCirceEncoders {
70
70
implicit def encodeListMapForCallbacks : Encoder [ListMap [String , ReferenceOr [Callback ]]] =
71
71
doEncodeListMap(nullWhenEmpty = true )
72
72
73
- deriveEncoder[Operation ].mapJsonObject(expandExtensions)
73
+ deriveEncoder[Operation ].dropNullsExpandExtensions
74
74
}
75
- implicit val encoderPathItem : Encoder [PathItem ] = deriveEncoder[PathItem ].mapJsonObject(expandExtensions)
75
+ implicit val encoderPathItem : Encoder [PathItem ] = deriveEncoder[PathItem ].dropNullsExpandExtensions
76
76
implicit val encoderPaths : Encoder [Paths ] = Encoder .instance { paths =>
77
77
val extensions = paths.extensions.asJsonObject
78
78
val pathItems = paths.pathItems.asJson
79
79
pathItems.asObject.map(_.deepMerge(extensions).asJson).getOrElse(pathItems)
80
80
}
81
- implicit val encoderComponents : Encoder [Components ] = deriveEncoder[Components ].mapJsonObject(expandExtensions)
81
+ implicit val encoderComponents : Encoder [Components ] = deriveEncoder[Components ].dropNullsExpandExtensions
82
82
implicit val encoderServerVariable : Encoder [ServerVariable ] =
83
- deriveEncoder[ServerVariable ].mapJsonObject(expandExtensions)
84
- implicit val encoderServer : Encoder [Server ] = deriveEncoder[Server ].mapJsonObject(expandExtensions)
85
- implicit val encoderTag : Encoder [Tag ] = deriveEncoder[Tag ].mapJsonObject(expandExtensions)
86
- implicit val encoderInfo : Encoder [Info ] = deriveEncoder[Info ].mapJsonObject(expandExtensions)
87
- implicit val encoderContact : Encoder [Contact ] = deriveEncoder[Contact ].mapJsonObject(expandExtensions)
88
- implicit val encoderLicense : Encoder [License ] = deriveEncoder[License ].mapJsonObject(expandExtensions)
89
- implicit val encoderOpenAPI : Encoder [OpenAPI ] =
90
- deriveEncoder[OpenAPI ].mapJsonObject(expandExtensions).mapJson(_.deepDropNullValues)
83
+ deriveEncoder[ServerVariable ].dropNullsExpandExtensions
84
+ implicit val encoderServer : Encoder [Server ] = deriveEncoder[Server ].dropNullsExpandExtensions
85
+ implicit val encoderTag : Encoder [Tag ] = deriveEncoder[Tag ].dropNullsExpandExtensions
86
+ implicit val encoderInfo : Encoder [Info ] = deriveEncoder[Info ].dropNullsExpandExtensions
87
+ implicit val encoderContact : Encoder [Contact ] = deriveEncoder[Contact ].dropNullsExpandExtensions
88
+ implicit val encoderLicense : Encoder [License ] = deriveEncoder[License ].dropNullsExpandExtensions
89
+ implicit val encoderOpenAPI : Encoder [OpenAPI ] = deriveEncoder[OpenAPI ].dropNullsExpandExtensions
91
90
}
0 commit comments