Sha256: 32d10a37ec01a0733bcd77283507b829b7575dd48f639c33771ac5701d3333d8

Contents?: true

Size: 1.12 KB

Versions: 22

Compression:

Stored size: 1.12 KB

Contents

module Transcriber
  class Resource
    module Response
      module Relation
        def to_resource(parent)
          included = parent.__send__(name)
          return {} unless visible?(parent) and included
          {name => resource_from_included(included)}
        end

        def to_relation(parent)
          {rel: name, href: href(parent)}
        end

        private

        def relation_name(parent)
          relation = parent.class.relations.find do |key|
            key.resource_class == self.resource_class
          end
          relation.name or fail
        end

        def resource_from_included(included)
          options = {root: false}
          one? ?
            included.resource(options)
          : included.map {|r| r.resource(options)}
        end

        def href(parent)
          id_key = parent.class.id_key.name
          has? ?
            "#{Transcriber.host}/#{parent.class.resource_name}/#{parent.send(id_key)}/#{relation_name(parent)}"
          : "#{Transcriber.host}/#{relation_name(parent).to_s.pluralize}/#{parent.send(id_key)}/#{parent.class.resource_name}"
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
transcriber-0.0.25 lib/transcriber/resource/response/relation.rb
transcriber-0.0.24 lib/transcriber/resource/response/relation.rb
transcriber-0.0.23 lib/transcriber/resource/response/relation.rb
transcriber-0.0.22 lib/transcriber/resource/response/relation.rb
transcriber-0.0.21 lib/transcriber/resource/response/relation.rb
transcriber-0.0.20 lib/transcriber/resource/response/relation.rb
transcriber-0.0.19 lib/transcriber/resource/response/relation.rb
transcriber-0.0.18 lib/transcriber/resource/response/relation.rb
transcriber-0.0.17 lib/transcriber/resource/response/relation.rb
transcriber-0.0.16 lib/transcriber/resource/response/relation.rb
transcriber-0.0.15 lib/transcriber/resource/response/relation.rb
transcriber-0.0.14 lib/transcriber/resource/response/relation.rb
transcriber-0.0.13 lib/transcriber/resource/response/relation.rb
transcriber-0.0.12 lib/transcriber/resource/response/relation.rb
transcriber-0.0.11 lib/transcriber/resource/response/relation.rb
transcriber-0.0.10 lib/transcriber/resource/response/relation.rb
transcriber-0.0.9 lib/transcriber/resource/response/relation.rb
transcriber-0.0.8 lib/transcriber/resource/response/relation.rb
transcriber-0.0.7 lib/transcriber/resource/response/relation.rb
transcriber-0.0.6 lib/transcriber/resource/response/relation.rb