Sha256: 153cb61ff7267ea7f8c0efacefb2b3d46c6edb803bba0f86c815ed436b9c0e42

Contents?: true

Size: 921 Bytes

Versions: 3

Compression:

Stored size: 921 Bytes

Contents

module Clever
  class District < APIResource
    include Clever::APIOperations::List

    def optional_attributes
      # All of a district's attributes are required.
      []
    end

    [:schools, :teachers, :sections, :students, :events].each do |name|
      define_method(name) do |filters = {}|
        get_linked_resources name.to_s, filters
      end
    end

    [:school_pages, :teacher_pages, :section_pages, :student_pages, :event_pages].each do |name|
      define_method(name) do |filters = {}|
        Clever::APIOperations::PageList.new(get_uri(name.to_s.gsub('_page', '')), filters)
      end
    end

    private

    def get_linked_resources(resource_type, filters={})
      Util.convert_to_clever_object(Clever.request(:get, get_uri(resource_type), filters)[:data])
    end

    def get_uri(resource_type)
      refresh
      links.detect {|link| link[:rel] == resource_type }[:uri]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
clever-ruby-0.3.1 lib/clever-ruby/district.rb
clever-ruby-0.3.0 lib/clever-ruby/district.rb
clever-ruby-0.2.0 lib/clever-ruby/district.rb