json-roa/json-roa_ruby-client

View on GitHub
lib/json_roa/client/collection.rb

Summary

Maintainability
A
1 hr
Test Coverage
module JSON_ROA
  module Client

    class Collection
      include Enumerable

      attr_reader :conn
      attr_reader :resource

      def initialize(conn, resource)
        @conn = conn
        @resource = resource
      end

      def each(&_block)
        loop do

          relations = collection_data['relations'] rescue []

          relations.each do |key, data|
            yield Relation.new(@conn, key, data) if block_given?
          end

          next_val = collection_data['next'] rescue nil

          if relations.empty? or (not next_val)
            break
          else
            @resource = Relation.new(@conn, 'next', next_val).get
          end

        end
      end

      def collection_data
        @resource.json_roa_data['collection']
      end

      def to_s
        "#{self.class.name}: #{collection_data}"
      end

    end

  end
end