Sha256: 2f6f916442ae5c2179523b4f9a7b2e7e04f0b05ef3a34bc3e6df982a3b2c789e

Contents?: true

Size: 895 Bytes

Versions: 35

Compression:

Stored size: 895 Bytes

Contents

module JsonApiClient
  module Linking
    class TopLevelLinks

      attr_reader :links, :record_class

      def initialize(record_class, links)
        @links = links
        @record_class = record_class
      end

      def respond_to_missing?(method, include_private = false)
        links.has_key?(method.to_s) || super
      end

      def method_missing(method, *args)
        if respond_to_missing?(method)
          fetch_link(method)
        else
          super
        end
      end

      def link_url_for(link_name)
        link_definition = links.fetch(link_name.to_s)
        if link_definition.is_a?(Hash)
          link_definition["href"]
        else
          link_definition
        end
      end

      def fetch_link(link_name)
        return unless respond_to_missing?(link_name)
        record_class.requestor.linked(link_url_for(link_name))
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 2 rubygems

Version Path
json_api_client-1.10.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.9.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.8.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.7.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.6.4 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.6.3 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.6.2 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.6.1 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.6.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.5.3 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.5.2 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.5.1 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.5.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.4.0 lib/json_api_client/linking/top_level_links.rb
json_api_client-1.3.0 lib/json_api_client/linking/top_level_links.rb