package ch.epfl.lamp

import scala.language.implicitConversions

import spray.json._

class RichJsValue(js: JsValue) {
  def \(name: String): JsValue = js match {
    case JsObject(fields) =>
      fields(name)
    case _ =>
      throw new IllegalArgumentException("Cannot select field " + name + " from non-JsObject " + js)
  }

  def hasFieldNamed(name: String) = js match {
    case JsObject(fields) =>
      fields.contains(name)
    case _ =>
      false
  }

  def arrayValues: List[JsValue] = js match {
    case JsArray(values) =>
      values.toList
    case _ =>
      throw new IllegalArgumentException("Trying to select values from non-JsArray" + js)
  }
}

object RichJsValue {
  implicit def enrichJsValue(js: JsValue) = new RichJsValue(js)
}