lib/yaks/serializer/json_api.rb in yaks-0.4.1 vs lib/yaks/serializer/json_api.rb in yaks-0.4.2
- old
+ new
@@ -5,26 +5,31 @@
class JsonApi < self
Serializer.register self, :json_api, 'application/vnd.api+json'
include FP
- def call
- serialized = {
- pluralize(resource.type) => resource.map(&method(:serialize_resource))
- }
+ def call(resource)
+ main_collection = resource.map(&method(:serialize_resource))
- linked = resource.each_with_object({}) do |res, hsh|
- serialize_linked_subresources(res.subresources, hsh)
+ { pluralize(resource.type) => main_collection }.tap do |serialized|
+ linked = resource.each_with_object({}) do |res, hsh|
+ serialize_linked_subresources(res.subresources, hsh)
+ end
+ serialized.merge!(linked: linked) unless linked.empty?
end
- serialized = serialized.merge('linked' => linked)
-
- serialized
end
- alias serialize call
def serialize_resource(resource)
result = resource.attributes
- result = result.merge(:links => serialize_links(resource.subresources)) unless resource.subresources.empty?
+
+ unless resource.subresources.empty?
+ result[:links] = serialize_links(resource.subresources)
+ end
+
+ if resource.self_link && !result.key?(:href)
+ result[:href] = resource.self_link.uri
+ end
+
result
end
def serialize_links(subresources)
subresources.each_with_object({}) do |(name, resource), hsh|