servant-hateoas-0.3.4: HATEOAS extension for servant
Safe HaskellSafe-Inferred
LanguageGHC2021

Servant.Hateoas.Resource

Synopsis

Resource

MkResource

type family MkResource ct :: Type -> Type Source #

Type family computing the Resource-Type belonging to this Content-Type.

Instances

Instances details
type MkResource (HAL t) Source # 
Instance details

Defined in Servant.Hateoas.ContentType.HAL

Base Class

class Resource res where Source #

Class for resources that carry Hypermedia-Relations.

Methods

wrap :: a -> res a Source #

Wrap a value into a Resource.

addRel :: (String, RelationLink) -> res a -> res a Source #

Add a hypermedia relation (rel, link) to a Resource.

Instances

Instances details
Resource HALResource Source # 
Instance details

Defined in Servant.Hateoas.ContentType.HAL

addSelfRel :: Resource res => RelationLink -> res a -> res a Source #

Add the self-relation to a Resource.

Specialized classes

class Resource res => EmbeddingResource res where Source #

Class for Resources that can embed other resources.

Methods

embed :: ToJSON e => (String, res e) -> res a -> res a Source #

Embed a resource b with its relation rel as tuple (rel, b).

Instances

Instances details
EmbeddingResource HALResource Source # 
Instance details

Defined in Servant.Hateoas.ContentType.HAL

class Resource res => CollectingResource res where Source #

Class for Resources that can collect multiple resources.

Methods

collect :: a -> res a -> res a Source #

Collect a resource into the collection.

Creation

class ToResource res a where Source #

Class for converting values of a to their respective Resource-Representation.

The default implementation wraps the value into a Resource without adding any further information. Therefore you can derive an instance for this class.

Minimal complete definition

Nothing

Methods

toResource :: (res ~ MkResource ct, Accept ct) => Proxy res -> Proxy ct -> a -> res a Source #

Describes how a value a can be converted to a Resource.

default toResource :: (res ~ MkResource ct, Resource res) => Proxy res -> Proxy ct -> a -> res a Source #

Instances

Instances details
Resource res => ToResource res Intermediate Source # 
Instance details

Defined in Servant.Hateoas.Layer.Type

Methods

toResource :: (res ~ MkResource ct, Accept ct) => Proxy res -> Proxy ct -> Intermediate -> res Intermediate Source #

Resource res => ToResource res [a] Source # 
Instance details

Defined in Servant.Hateoas.Resource

Methods

toResource :: (res ~ MkResource ct, Accept ct) => Proxy res -> Proxy ct -> [a] -> res [a] Source #