Sha256: d1e7bcf5ba79fbf7d0aab84eb9b6c2cdd24f8b6f2c5655775c00b29e378d4011

Contents?: true

Size: 1.2 KB

Versions: 14

Compression:

Stored size: 1.2 KB

Contents

module TMS::CollectionResource
  def self.included(base)
    base.send(:include, InstanceMethods)
  end

  module InstanceMethods
    include TMS::Base
    attr_accessor :collection

    def initialize(client, href, items=nil)
      super(client, href)
      if items
        initialize_collection_from_items(items)
      else
        self.collection = []
      end

    end

    def get
      response = client.get(href)
      initialize_collection_from_items(response.body)
      #setup page links from header
      links = LinkHeader.parse(response.headers['link']).to_a.collect do |a|
        {a[1][0].last => a[0]}
      end
      parse_links(links)
      self
    end

    def build(attributes=nil)
      thing = instance_class(self.class).new(client, self.href, attributes || {})
      thing.new_record = true
      self.collection << thing
      thing
    end

    def to_json
      @collection.map(&:to_json)
    end

    def to_s
      "<#{self.class.inspect} href=#{self.href} collection=#{self.collection.inspect}>"
    end

    private

    def initialize_collection_from_items(items)
      self.collection = items.map do |attrs|
        instance_class(self.class).new(client, nil, attrs)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
govdelivery-tms-0.8.0 lib/govdelivery-tms/collection_resource.rb
tms_client-0.6.0 lib/tms_client/collection_resource.rb
tms_client-0.5.4 lib/tms_client/collection_resource.rb
tms_client-0.5.3 lib/tms_client/collection_resource.rb
tms_client-0.5.2 lib/tms_client/collection_resource.rb
tms_client-0.5.1 lib/tms_client/collection_resource.rb
tms_client-0.4.1 lib/tms_client/collection_resource.rb
tms_client-0.4.0 lib/tms_client/collection_resource.rb
tms_client-0.3.0 lib/tms_client/collection_resource.rb
tms_client-0.2.2 lib/tms_client/collection_resource.rb
tms_client-0.2.1 lib/tms_client/collection_resource.rb
tms_client-0.2.0 lib/tms_client/collection_resource.rb
tms_client-0.1.1 lib/tms_client/collection_resource.rb
tms_client-0.1.0 lib/tms_client/collection_resource.rb