All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.leanovate.swaggercheck.schema.play.ValidatingReads.scala Maven / Gradle / Ivy

There is a newer version: 1.0.2
Show newest version
package de.leanovate.swaggercheck.schema.play

import de.leanovate.swaggercheck.schema.model._
import de.leanovate.swaggercheck.schema.play.Implicits._
import play.api.data.validation.ValidationError
import play.api.libs.json.{JsError, JsResult, JsValue, Reads}

object ValidatingReads {
  def validating[T](schema: DefaultSchema)(implicit underlying: Reads[T]): Reads[T] = new Reads[T] {
    override def reads(json: JsValue): JsResult[T] = schema.validate(json) match {
      case ValidationSuccess => underlying.reads(json)
      case ValidationFailure(failures) => JsError(ValidationError(failures))
    }
  }

  def validating[T](schema: Schema, definition: Definition)(implicit underlying: Reads[T]): Reads[T] = new Reads[T] {
    override def reads(json: JsValue): JsResult[T] = definition.validate(schema, JsonPath(), json) match {
      case ValidationSuccess => underlying.reads(json)
      case ValidationFailure(failures) => JsError(ValidationError(failures))
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy