Packages

  • package root
    Definition Classes
    root
  • package schidaine
    Definition Classes
    root
  • package mason

    Manage your REST resources with Mason.

    Manage your REST resources with Mason.

    More about HATEOAS : https://en.wikipedia.org/wiki/HATEOAS

    Mason specs can be found here : https://github.com/JornWildt/Mason/blob/master/Documentation/Mason-draft-2.md

    This library uses play-json : https://github.com/playframework/play-json

    As for play-json, write an implicit schidaine.mason.MasonWrite in a companion object of your resource.

    Example :

    import play.api.libs.json._
    import schidaine.mason._
    
    case class MyObject(data: String)
    object MyObject extends MasonValues {
      implicit val masonWrite = new MasonWrite[MyObject] {
        def writes(o: MyObject) =
          Namespaces("ns1" -> "https://localhost/rels") ++
          Json.obj("object" -> o.data) ++
          Controls(
            "self" -> Link($.href := "https://localhost/my-object"),
            "ns1:add-description" -> Link($.href := "https://localhost/my-object/descriptions", $.encoding := JSON)
          )
      }
    }

    Use schidaine.mason.Mason object to manipulate a such resource.

    Example :

    val o = MyObject("Tardis")
    Mason.toJson(o)

    See schidaine.mason.MasonKeyBuilder to see available properties (Mason specs are not yet fully implemented).

p

schidaine

package schidaine

Package Members

  1. package mason

    Manage your REST resources with Mason.

    Manage your REST resources with Mason.

    More about HATEOAS : https://en.wikipedia.org/wiki/HATEOAS

    Mason specs can be found here : https://github.com/JornWildt/Mason/blob/master/Documentation/Mason-draft-2.md

    This library uses play-json : https://github.com/playframework/play-json

    As for play-json, write an implicit schidaine.mason.MasonWrite in a companion object of your resource.

    Example :

    import play.api.libs.json._
    import schidaine.mason._
    
    case class MyObject(data: String)
    object MyObject extends MasonValues {
      implicit val masonWrite = new MasonWrite[MyObject] {
        def writes(o: MyObject) =
          Namespaces("ns1" -> "https://localhost/rels") ++
          Json.obj("object" -> o.data) ++
          Controls(
            "self" -> Link($.href := "https://localhost/my-object"),
            "ns1:add-description" -> Link($.href := "https://localhost/my-object/descriptions", $.encoding := JSON)
          )
      }
    }

    Use schidaine.mason.Mason object to manipulate a such resource.

    Example :

    val o = MyObject("Tardis")
    Mason.toJson(o)

    See schidaine.mason.MasonKeyBuilder to see available properties (Mason specs are not yet fully implemented).

Ungrouped