Class: SchoolDigger::Api
- Inherits:
-
Object
- Object
- SchoolDigger::Api
- Includes:
- HTTParty
- Defined in:
- lib/school_digger/api.rb
Constant Summary collapse
- URL_ENDPOINT =
ENV.fetch("SCHOOL_DIGGER_BASE_URL", "https://api.schooldigger.com")
- API_VERSION =
ENV.fetch("SCHOOL_DIGGER_API_VERSION", "1.1")
- URL_BASE =
"#{URL_ENDPOINT}/v#{API_VERSION}"
Instance Method Summary collapse
-
#autocomplete(query, options = {}) ⇒ Object
# SchoolDigger::Api.new.autocomplete(‘San Die’, st: “CA”).
-
#district(district_id) ⇒ Object
# SchoolDigger::Api.new.district(“0600001”).
-
#district_rankings(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.district_rankings(‘CA’).
-
#districts(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.districts(‘CA’).
- #get(path, query = {}) ⇒ Object
-
#next_page(response) ⇒ Object
response = SchoolDigger::Api.new.districts(‘CA’) next_page_response = SchoolDigger::Api.new.next_page(response).
-
#school(school_id) ⇒ Object
# SchoolDigger::Api.new.school(“490003601072”).
-
#school_rankings(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.school_rankings(‘CA’).
-
#schools(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.schools(‘CA’) # SchoolDigger::Api.new.schools(‘CA’, q: “East High”).
Instance Method Details
#autocomplete(query, options = {}) ⇒ Object
# SchoolDigger::Api.new.autocomplete(‘San Die’, st: “CA”)
13 14 15 16 17 18 |
# File 'lib/school_digger/api.rb', line 13 def autocomplete(query, = {} ) = %w(q st level boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE returnCount) = .select {|k,v| .include?(k.to_s)} [:q] = query get "/autocomplete/schools", end |
#district(district_id) ⇒ Object
# SchoolDigger::Api.new.district(“0600001”)
31 32 33 34 35 |
# File 'lib/school_digger/api.rb', line 31 def district(district_id) response = get "/districts/#{district_id}" return "Not Found" if response.code == 404 response end |
#district_rankings(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.district_rankings(‘CA’)
38 39 40 41 42 43 44 |
# File 'lib/school_digger/api.rb', line 38 def district_rankings(state, = {} ) = %w(st year page perPage) = .select {|k,v| .include?(k.to_s)} [:perPage] ||= 50 [:page] ||= 1 get "/rankings/districts/#{state}", end |
#districts(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.districts(‘CA’)
21 22 23 24 25 26 27 28 |
# File 'lib/school_digger/api.rb', line 21 def districts(state, = {} ) = %w(st q city zip nearLatitude nearLongitude boundaryAddress distanceMiles isInBoundaryOnly boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE page perPage sortBy) = .select {|k,v| .include?(k.to_s)} [:st] = state [:perPage] ||= 50 [:page] ||= 1 get "/districts", end |
#get(path, query = {}) ⇒ Object
8 9 10 |
# File 'lib/school_digger/api.rb', line 8 def get(path, query = {}) response = self.class.get(URL_BASE + path, query: modify_query(query), timeout: 30) end |
#next_page(response) ⇒ Object
response = SchoolDigger::Api.new.districts(‘CA’) next_page_response = SchoolDigger::Api.new.next_page(response)
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/school_digger/api.rb', line 76 def next_page(response) max_pages = response["numberOfPages"] original_query = response.request.[: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) ⇒ Object
# SchoolDigger::Api.new.school(“490003601072”)
59 60 61 62 63 |
# File 'lib/school_digger/api.rb', line 59 def school(school_id) response = get "/schools/#{school_id}" return "Not Found" if response.code == 404 response end |
#school_rankings(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.school_rankings(‘CA’)
66 67 68 69 70 71 72 |
# File 'lib/school_digger/api.rb', line 66 def school_rankings(state, = {} ) = %w(st year level page perPage) = .select {|k,v| .include?(k.to_s)} [:perPage] ||= 50 [:page] ||= 1 get "/rankings/schools/#{state}", end |
#schools(state, options = {}) ⇒ Object
# SchoolDigger::Api.new.schools(‘CA’) # SchoolDigger::Api.new.schools(‘CA’, q: “East High”)
49 50 51 52 53 54 55 56 |
# File 'lib/school_digger/api.rb', line 49 def schools(state, = {} ) = %w(st q districtID level city zip isMagnet isCharter isVirtual isTitleI isTitleISchoolwide nearLatitude nearLongitude boundaryAddress distanceMiles isInBoundaryOnly boxLatitudeNW boxLongitudeNW boxLatitudeSE boxLongitudeSE page perPage sortBy) = .select {|k,v| .include?(k.to_s)} [:st] = state [:perPage] ||= 50 [:page] ||= 1 get "/schools", end |