require 'httparty' require 'json' require 'fileutils' class CanalEducacaoAPI include HTTParty base_uri '' def initialize() @options = { headers: { "Content-Type" => "application/json", "Authorization": "" } } end def make_request(path) attempts = 0 max_attempts = 5 begin response = self.class.get(path, @options) return response if response.success? raise 'Request failed' rescue => e attempts += 1 puts "Tentativa #{attempts} para o path #{path} falhou: #{e}. Tentando novamente..." if attempts < max_attempts sleep(5) if attempts < max_attempts retry if attempts < max_attempts puts "Falha após #{max_attempts} tentativas para o path #{path}." return nil end end def fetch_schools make_request('/escolas') end def fetch_classes(school_id) make_request("/escolas/#{school_id}/turmas") end def fetch_class_details(class_id) make_request("/turmas/#{class_id}") end def fetch_class_lessons(class_id) make_request("/turmas/#{class_id}/aulas") end def fetch_lesson_details(lesson_id) make_request("/aulas/#{lesson_id}") end end