Class: Oat::Adapters::Siren
- Inherits:
-
Oat::Adapter
- Object
- Oat::Adapter
- Oat::Adapters::Siren
- Defined in:
- lib/oat/adapters/siren.rb
Defined Under Namespace
Classes: Action
Instance Method Summary collapse
- #action(name, &block) ⇒ Object
- #entities(name, collection, serializer_class = nil, context_options = {}, &block) ⇒ Object (also: #collection)
- #entity(name, obj, serializer_class = nil, context_options = {}, &block) ⇒ Object
-
#initialize(*args) ⇒ Siren
constructor
A new instance of Siren.
- #link(rel, opts = {}) ⇒ Object
- #properties(&block) ⇒ Object
- #property(key, value) ⇒ Object (also: #meta)
-
#rel(rels) ⇒ Object
Sub-Entities have a required rel attribute github.com/kevinswiber/siren#rel.
- #type(*types) ⇒ Object
Methods inherited from Oat::Adapter
Constructor Details
#initialize(*args) ⇒ Siren
Returns a new instance of Siren.
6 7 8 9 10 11 |
# File 'lib/oat/adapters/siren.rb', line 6 def initialize(*args) super data[:links] = [] data[:entities] = [] data[:actions] = [] end |
Instance Method Details
#action(name, &block) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/oat/adapters/siren.rb', line 59 def action(name, &block) action = Action.new(name) block.call(action) data[:actions] << action.data end |
#entities(name, collection, serializer_class = nil, context_options = {}, &block) ⇒ Object Also known as: collection
51 52 53 54 55 |
# File 'lib/oat/adapters/siren.rb', line 51 def entities(name, collection, serializer_class = nil, = {}, &block) collection.each do |obj| entity name, obj, serializer_class, , &block end end |
#entity(name, obj, serializer_class = nil, context_options = {}, &block) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/oat/adapters/siren.rb', line 38 def entity(name, obj, serializer_class = nil, = {}, &block) ent = serializer_from_block_or_class(obj, serializer_class, , &block) if ent # use the name as the sub-entities rel to the parent resource. ent.rel(name) ent_hash = ent.to_hash unless data[:entities].include? ent_hash data[:entities] << ent_hash end end end |
#link(rel, opts = {}) ⇒ Object
24 25 26 |
# File 'lib/oat/adapters/siren.rb', line 24 def link(rel, opts = {}) data[:links] << {:rel => [rel].flatten}.merge(opts) end |
#properties(&block) ⇒ Object
28 29 30 |
# File 'lib/oat/adapters/siren.rb', line 28 def properties(&block) data[:properties].merge! yield_props(&block) end |
#property(key, value) ⇒ Object Also known as: meta
32 33 34 |
# File 'lib/oat/adapters/siren.rb', line 32 def property(key, value) data[:properties][key] = value end |
#rel(rels) ⇒ Object
Sub-Entities have a required rel attribute github.com/kevinswiber/siren#rel
15 16 17 18 |
# File 'lib/oat/adapters/siren.rb', line 15 def rel(rels) # rel must be an array. data[:rel] = Array(rels) end |
#type(*types) ⇒ Object
20 21 22 |
# File 'lib/oat/adapters/siren.rb', line 20 def type(*types) data[:class] = types end |