Class: HalClient::Representation
- Inherits:
-
Object
- Object
- HalClient::Representation
- Extended by:
- Forwardable
- Defined in:
- lib/hal_client/representation.rb
Overview
HAL representation of a single resource. Provides access to properties, links and embedded representations.
Instance Method Summary collapse
-
#[](name_or_rel) ⇒ Object
Returns the value of the specified property or representations of resources related via the specified link rel or nil.
-
#fetch(name_or_rel, default = MISSING, &default_proc) ⇒ Object
Returns the value of the specified property or representations of resources related via the specified link rel or the specified default value.
-
#has_related?(link_rel) ⇒ Boolean
Returns true if this representation contains a link (including embedded links) whose rel is ‘link_rel`.
-
#href ⇒ Object
Returns the URL of the resource this representation represents.
-
#initialize(options) ⇒ Representation
constructor
Create a new Representation.
-
#post(data, options = {}) ⇒ Object
Posts a ‘Representation` or `String` to this resource.
-
#property(name, default = MISSING, &default_proc) ⇒ Object
Returns The value of the specified property or the specified default value.
-
#related(link_rel, options = {}, &default_proc) ⇒ Object
Returns representations of resources related via the specified link rel or the specified default value.
-
#related_hrefs(link_rel, options = {}, &default_proc) ⇒ Object
Returns urls of resources related via the specified link rel or the specified default value.
-
#to_json ⇒ Object
Returns the raw json representation of this representation.
-
#to_s ⇒ Object
Returns a short human readable description of this representation.
Constructor Details
#initialize(options) ⇒ Representation
Create a new Representation
options - name parameters
:parsed_json - A hash structure representing a single HAL
document.
:href - The href of this representation.
:hal_client - The HalClient instance to use when navigating.
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/hal_client/representation.rb', line 21 def initialize() @raw = [:parsed_json] @hal_client = [:hal_client] @href = [:href] (fail ArgumentError, "Either parsed_json or href must be provided") if @raw.nil? && @href.nil? (fail InvalidRepresentationError, "Invalid HAL representation: #{raw.inspect}") if @raw && ! hashish?(@raw) end |
Instance Method Details
#[](name_or_rel) ⇒ Object
Returns the value of the specified property or representations
of resources via the specified link rel or nil
name_or_rel - The name of property or link rel of interest
90 91 92 93 |
# File 'lib/hal_client/representation.rb', line 90 def [](name_or_rel) item_key = name_or_rel fetch(item_key, nil) end |
#fetch(name_or_rel, default = MISSING, &default_proc) ⇒ Object
Returns the value of the specified property or representations
of resources via the specified link rel or the
specified default value.
name_or_rel - The name of property or link rel of interest default - an optional object that should be return if the
specified property or link does not exist
default_proc - an option proc that will be called with ‘name`
to produce default value if the specified property or link does not
exist
Raises KeyError if the specified property or link does not exist
and no default nor default_proc is provided.
77 78 79 80 81 82 83 84 |
# File 'lib/hal_client/representation.rb', line 77 def fetch(name_or_rel, default=MISSING, &default_proc) item_key = name_or_rel default_proc ||= ->(_){default} if default != MISSING property(item_key) { (item_key, &default_proc) } end |
#has_related?(link_rel) ⇒ Boolean
Returns true if this representation contains a link (including embedded links) whose rel is ‘link_rel`.
link_rel - The link rel of interest
99 100 101 102 103 104 105 |
# File 'lib/hal_client/representation.rb', line 99 def (link_rel) _ = link_rel true rescue KeyError false end |
#href ⇒ Object
Returns the URL of the resource this representation represents.
60 61 62 |
# File 'lib/hal_client/representation.rb', line 60 def href @href ||= link_section.fetch("self").fetch("href") end |
#post(data, options = {}) ⇒ Object
Posts a ‘Representation` or `String` to this resource.
data - a ‘String` or an object that responds to `#to_hal` options - set of options to pass to `HalClient#post`
37 38 39 |
# File 'lib/hal_client/representation.rb', line 37 def post(data, ={}) @hal_client.post(href, data, ) end |
#property(name, default = MISSING, &default_proc) ⇒ Object
Returns The value of the specified property or the specified
default value.
name - The name of property of interest default - an optional object that should be return if the
specified property does not exist
default_proc - an option proc that will be called with ‘name`
to produce default value if the specified property does not
exist
Raises KeyError if the specified property does not exist
and no default nor default_proc is provided.
53 54 55 56 57 |
# File 'lib/hal_client/representation.rb', line 53 def property(name, default=MISSING, &default_proc) default_proc ||= ->(_){ default} if default != MISSING raw.fetch(name.to_s, &default_proc) end |
#related(link_rel, options = {}, &default_proc) ⇒ Object
Returns representations of resources related via the specified
link rel or the specified default value.
link_rel - The link rel of interest options - optional keys and values with which to expand any
templated links that are encountered
default_proc - an option proc that will be called with ‘name`
to produce default value if the specified property or link does not
exist
Raises KeyError if the specified link does not exist
and no default_proc is provided.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/hal_client/representation.rb', line 119 def (link_rel, = {}, &default_proc) default_proc ||= ->(link_rel){ raise KeyError, "No resources are related via `#{link_rel}`" } = (link_rel) linked = linked_or_nil(link_rel, ) if !.nil? or !linked.nil? RepresentationSet.new (Array() + Array(linked)) else default_proc.call link_rel end end |
#related_hrefs(link_rel, options = {}, &default_proc) ⇒ Object
Returns urls of resources related via the specified
link rel or the specified default value.
link_rel - The link rel of interest options - optional keys and values with which to expand any
templated links that are encountered
default_proc - an option proc that will be called with ‘name`
to produce default value if the specified property or link does not
exist
Raises KeyError if the specified link does not exist
and no default_proc is provided.
146 147 148 149 |
# File 'lib/hal_client/representation.rb', line 146 def (link_rel, ={}, &default_proc) (link_rel, , &default_proc). map(&:href) end |
#to_json ⇒ Object
Returns the raw json representation of this representation
158 159 160 |
# File 'lib/hal_client/representation.rb', line 158 def to_json raw.to_json end |
#to_s ⇒ Object
Returns a short human readable description of this representation.
153 154 155 |
# File 'lib/hal_client/representation.rb', line 153 def to_s "#<" + self.class.name + ": " + href + ">" end |