aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/utils/WritesUtils.scala
blob: 3476a1e6193ac4d18e9a4f99a9c38dcfa3acd7c0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package xyz.driver.pdsuicommon.utils

import play.api.libs.json._

object WritesUtils {

  def filterKeys[T](p: String => Boolean)(implicit w: Writes[T]): Writes[T] = {
    filter {
      case (key, _) => p(key)
    }
  }

  def filter[T](p: (String, JsValue) => Boolean)(implicit w: Writes[T]): Writes[T] = {
    w.transform { input: JsValue =>
      input match {
        case JsObject(map) => JsObject(map.filter(Function.tupled(p)))
        case x             => x
      }
    }
  }
}