Skip to content

Commit

Permalink
Merge pull request #907 from walt-id/fix/verifier-metadata
Browse files Browse the repository at this point in the history
fix: add specific serializers for draft13 and draft11
  • Loading branch information
chsavvaidis authored Jan 24, 2025
2 parents bdf79ee + ad68702 commit ab648a4
Showing 1 changed file with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -343,3 +343,52 @@ object OpenIDProviderMetadataSerializer : KSerializer<OpenIDProviderMetadata> {
}
}

object OpenIDProviderMetadataDraft13Serializer : KSerializer<OpenIDProviderMetadata.Draft13> {
override val descriptor: SerialDescriptor = OpenIDProviderMetadata.Draft13.serializer().descriptor

override fun serialize(encoder: Encoder, value: OpenIDProviderMetadata.Draft13) {
val jsonEncoder = encoder as? JsonEncoder
?: throw SerializationException("This serializer can only be used with a JSON encoder")

// Serialize Draft13 and delegate transformations
val jsonElement = Json.encodeToJsonElement(OpenIDProviderMetadata.Draft13.serializer(), value)
val transformedElement = OpenIDProviderMetadataJsonSerializer.transformSerialize(jsonElement)
jsonEncoder.encodeJsonElement(transformedElement)
}

override fun deserialize(decoder: Decoder): OpenIDProviderMetadata.Draft13 {
val jsonDecoder = decoder as? JsonDecoder
?: throw SerializationException("This serializer can only be used with a JSON decoder")

// Deserialize Draft13 and delegate transformations
val rawJsonElement = jsonDecoder.decodeJsonElement()
val transformedElement = OpenIDProviderMetadataJsonSerializer.transformDeserialize(rawJsonElement)

return Json.decodeFromJsonElement(OpenIDProviderMetadata.Draft13.serializer(), transformedElement)
}
}

object OpenIDProviderMetadataDraft11Serializer : KSerializer<OpenIDProviderMetadata.Draft11> {
override val descriptor: SerialDescriptor = OpenIDProviderMetadata.Draft11.serializer().descriptor

override fun serialize(encoder: Encoder, value: OpenIDProviderMetadata.Draft11) {
val jsonEncoder = encoder as? JsonEncoder
?: throw SerializationException("This serializer can only be used with a JSON encoder")

// Serialize Draft13 and delegate transformations
val jsonElement = Json.encodeToJsonElement(OpenIDProviderMetadata.Draft11.serializer(), value)
val transformedElement = OpenIDProviderMetadataJsonSerializer.transformSerialize(jsonElement)
jsonEncoder.encodeJsonElement(transformedElement)
}

override fun deserialize(decoder: Decoder): OpenIDProviderMetadata.Draft11 {
val jsonDecoder = decoder as? JsonDecoder
?: throw SerializationException("This serializer can only be used with a JSON decoder")

// Deserialize Draft13 and delegate transformations
val rawJsonElement = jsonDecoder.decodeJsonElement()
val transformedElement = OpenIDProviderMetadataJsonSerializer.transformDeserialize(rawJsonElement)

return Json.decodeFromJsonElement(OpenIDProviderMetadata.Draft11.serializer(), transformedElement)
}
}

0 comments on commit ab648a4

Please sign in to comment.