class SchoolDigger::Api

Public Instance Methods

autocomplete(query, options = {} ) click to toggle source

SchoolDigger::Api.new.autocomplete('San Die', st: “CA”)

# File lib/school_digger/api.rb, line 11
def autocomplete(query, options = {} )
  available_options = %w(q st level boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE returnCount)
  options = options.select {|k,v| available_options.include?(k.to_s)}
  options[:q] = query
  get "/autocomplete/schools", options
end
district(district_id) click to toggle source

SchoolDigger::Api.new.district(“0600001”)

# File lib/school_digger/api.rb, line 29
def district(district_id)
  response = get "/districts/#{district_id}"
  return "Not Found" if response.code == 404
  response
end
district_rankings(state, options = {} ) click to toggle source

SchoolDigger::Api.new.district_rankings('CA')

# File lib/school_digger/api.rb, line 36
def district_rankings(state, options = {} )
  available_options = %w(st year page perPage)
  options = options.select {|k,v| available_options.include?(k.to_s)}
  options[:perPage] ||= 50
  options[:page] ||= 1
  get "/rankings/districts/#{state}", options
end
districts(state, options = {} ) click to toggle source

SchoolDigger::Api.new.districts('CA')

# File lib/school_digger/api.rb, line 19
def districts(state, options = {} )
  available_options = %w(st q city zip nearLatitude nearLongitude boundaryAddress distanceMiles isInBoundaryOnly boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE page perPage sortBy)
  options = options.select {|k,v| available_options.include?(k.to_s)}
  options[:st] = state
  options[:perPage] ||= 50
  options[:page] ||= 1
  get "/districts", options
end
get(path, query = {}) click to toggle source
# File lib/school_digger/api.rb, line 6
def get(path, query = {})
  response = self.class.get(school_digger_url_base + path, query: modify_query(query), timeout: 30)
end
next_page(response) click to toggle source

response = SchoolDigger::Api.new.districts('CA') next_page_response = SchoolDigger::Api.new.next_page(response)

# File lib/school_digger/api.rb, line 74
def next_page(response)
  max_pages = response["numberOfPages"]
  original_query  = response.request.options[:query]
  current_page = original_query[:page]
  next_page = current_page.to_i + 1
  raise "Already at Last Page" if current_page >= max_pages

  query = original_query.merge({page: next_page})
  SchoolDigger::Api.get( response.request.path, query: query, timeout: 30)
end
school(school_id) click to toggle source

SchoolDigger::Api.new.school(“490003601072”)

# File lib/school_digger/api.rb, line 57
def school(school_id)
  response = get "/schools/#{school_id}"
  return "Not Found" if response.code == 404
  response
end
school_rankings(state, options = {} ) click to toggle source

SchoolDigger::Api.new.school_rankings('CA')

# File lib/school_digger/api.rb, line 64
def school_rankings(state, options = {} )
  available_options = %w(st year level page perPage)
  options = options.select {|k,v| available_options.include?(k.to_s)}
  options[:perPage] ||= 50
  options[:page] ||= 1
  get "/rankings/schools/#{state}", options
end
schools(state, options = {} ) click to toggle source

SchoolDigger::Api.new.schools('CA') SchoolDigger::Api.new.schools('CA', q: “East High”)

# File lib/school_digger/api.rb, line 47
def schools(state, options = {} )
  available_options = %w(st q districtID level city zip isMagnet isCharter isVirtual isTitleI isTitleISchoolwide nearLatitude nearLongitude boundaryAddress distanceMiles isInBoundaryOnly boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE page perPage sortBy)
  options = options.select {|k,v| available_options.include?(k.to_s)}
  options[:st] = state
  options[:perPage] ||= 50
  options[:page] ||= 1
  get "/schools", options
end

Private Instance Methods

modify_query(query) click to toggle source
# File lib/school_digger/api.rb, line 87
def modify_query(query)
  default_params = {
    appID: ENV.fetch("SCHOOL_DIGGER_APP_ID", 'not-implemented'),
    appKey:  ENV.fetch("SCHOOL_DIGGER_APP_KEY", 'not-implemented')
  }
  default_params.merge query
end
school_digger_api_version() click to toggle source
# File lib/school_digger/api.rb, line 100
def school_digger_api_version
  @school_digger_api_version ||= ENV.fetch("SCHOOL_DIGGER_API_VERSION", "1.1")
end
school_digger_url_base() click to toggle source
# File lib/school_digger/api.rb, line 104
def school_digger_url_base
  @school_digger_url_base ||= "#{school_digger_url_endpoint}/v#{school_digger_api_version}"
end
school_digger_url_endpoint() click to toggle source
# File lib/school_digger/api.rb, line 96
def school_digger_url_endpoint
  @school_digger_url_endpoint ||= ENV.fetch("SCHOOL_DIGGER_BASE_URL", "https://api.schooldigger.com")
end