class LearnOpen::Adapters::LearnWebAdapter

Attributes

client[R]
io[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 6
def initialize(options = {})
  @client = options.fetch(:learn_web_client) {LearnOpen.learn_web_client}
  @io = options.fetch(:io) {LearnOpen.default_io}
end

Public Instance Methods

current_lesson() click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 44
def current_lesson
  @current_lesson ||= client.current_lesson
end
fetch_lesson_data(target_lesson: false, fetch_next_lesson: false) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 11
def fetch_lesson_data(target_lesson: false, fetch_next_lesson: false)
  if opening_current_lesson?(target_lesson, fetch_next_lesson)
    load_current_lesson
    {
        lesson: current_lesson,
        id: current_lesson.id,
        later_lesson: false
    }
  elsif opening_next_lesson?(target_lesson, fetch_next_lesson)
    load_next_lesson
    {
        lesson: next_lesson,
        id: next_lesson.id,
        later_lesson: false
    }
  else
    lesson = get_lesson(target_lesson)
    {
        lesson: lesson,
        id: lesson.lesson_id,
        later_lesson: lesson.later_lesson
    }
  end
end
get_lesson(target_lesson, retries = 3) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 86
def get_lesson(target_lesson, retries = 3)
  @correct_lesson ||= begin
    Timeout::timeout(15) do
      client.validate_repo_slug(repo_slug: target_lesson)
    end
  rescue Timeout::Error
    if retries > 0
      io.puts "There was a problem connecting to Learn. Retrying..."
      get_lesson(target_lesson, retries - 1)
    else
      io.puts "Cannot connect to Learn right now. Please try again."
      logger.log('ERROR: Error connecting to Learn')
      exit
    end
  end
end
load_current_lesson(retries = 3) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 52
def load_current_lesson(retries = 3)
  begin
    Timeout::timeout(15) do
      current_lesson
    end
  rescue Timeout::Error
    if retries > 0
      io.puts "There was a problem getting your lesson from Learn. Retrying..."
      load_current_lesson(retries - 1)
    else
      io.puts "There seems to be a problem connecting to Learn. Please try again."
      logger.log('ERROR: Error connecting to Learn')
      exit
    end
  end
end
load_next_lesson(retries = 3) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 69
def load_next_lesson(retries = 3)
  begin
    Timeout::timeout(15) do
      next_lesson
    end
  rescue Timeout::Error
    if retries > 0
      io.puts "There was a problem getting your next lesson from Learn. Retrying..."
      load_next_lesson(retries - 1)
    else
      io.puts "There seems to be a problem connecting to Learn. Please try again."
      logger.log('ERROR: Error connecting to Learn')
      exit
    end
  end
end
next_lesson() click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 48
def next_lesson
  @next_lesson ||= client.next_lesson
end
opening_current_lesson?(target_lesson, fetch_next_lesson) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 36
def opening_current_lesson?(target_lesson, fetch_next_lesson)
  !target_lesson && !fetch_next_lesson
end
opening_next_lesson?(target_lesson, fetch_next_lesson) click to toggle source
# File lib/learn_open/adapters/learn_web_adapter.rb, line 40
def opening_next_lesson?(target_lesson, fetch_next_lesson)
  !target_lesson && fetch_next_lesson
end