class EdFi::Wisconsin::DescriptorService < EdFi::Wisconsin::ApplicationService
  include CacheHelper

  def initialize(school_year_id, params={})
    return super(school_year_id, params) if school_year_id

    @academic_year = params[:academic_year]
    @school = School.find(params[:school_id])
    @school_year = school.school_years.find_by(academic_year: @academic_year)
    @params = params
  end

  def call
    load_cache("edfi/wisconsin/#{school_year.academic_year}/#{endpoint}") do
      offset = 0
      data = []

      loop do
        response = RestClient.get(url, headers.merge(params: { offset: offset })).body
        parsed = JSON.parse(response)

        break if parsed.empty? || offset > 600

        data += parsed
        offset += 25
      end

      data.to_json
    end
  end

  private
    def endpoint
      @params[:descriptor]
    end
end
