XYOracleNetwork/sdk-xyo-client-android

View on GitHub
sdk/src/main/java/network/xyo/client/payload/XyoPayload.kt

Summary

Maintainability
A
0 mins
Test Coverage
package network.xyo.client.payload

import com.squareup.moshi.JsonClass
import network.xyo.client.XyoSerializable

open class XyoException(message: String): Throwable(message)
open class XyoValidationException(message: String): XyoException(message)
open class XyoInvalidSchemaException(val schema: String): XyoValidationException("'schema' must be lowercase [${schema}]")
open class XyoInvalidPreviousHashException(val previousHash: String?): XyoValidationException("'previous_hash' must be lowercase [${previousHash}]")

@JsonClass(generateAdapter = true)
open class XyoPayload(schema: String, previousHash: String? = null): XyoSerializable() {
    var schema = schema.lowercase()
    var previousHash = previousHash?.lowercase()
    @Throws(XyoValidationException::class)
    open fun validate() {
        if (schema != schema.lowercase()) {
            throw XyoInvalidSchemaException(schema)
        }
        if (previousHash != previousHash?.lowercase()) {
            throw XyoInvalidPreviousHashException(previousHash)
        }
    }
}