Module: EdgycircleToolbox::Sonapi::Resource::ClassMethods

Defined in:
lib/edgycircle_toolbox/sonapi/resource.rb

Instance Method Summary collapse

Instance Method Details

#attribute(attribute_name) ⇒ Object



39
40
41
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 39

def attribute(attribute_name)
  @blueprint.add_attribute attribute_name.to_s
end

#deserialize(parameters) ⇒ Object



35
36
37
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 35

def deserialize(parameters)
  Deserializer.new(@blueprint).call(parameters)
end

#dynamic_attributes(callable) ⇒ Object



43
44
45
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 43

def dynamic_attributes(callable)
  @blueprint.dynamic_attributes = callable
end

#parameter_filter(callable) ⇒ Object



47
48
49
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 47

def parameter_filter(callable)
  @blueprint.parameter_filter = callable
end

#serialize(object, options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 17

def serialize(object, options = {})
  if object.respond_to?(:map)
    data = object.map { |item| serialize_resource(item) }
  else
    data = serialize_resource(object)
  end

  result = {
    "data" => data
  }

  if options[:included_resources]
    result.merge!({ "included" => options[:included_resources] })
  end

  result
end

#serialize_resource(object) ⇒ Object



13
14
15
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 13

def serialize_resource(object)
  Serializer.new(@blueprint).call(object)
end

#type(type) ⇒ Object



9
10
11
# File 'lib/edgycircle_toolbox/sonapi/resource.rb', line 9

def type(type)
  @blueprint = Blueprint.new(type)
end