Sha256: 8169fb414b559e5c5a7084a9de5b1372d4715b5a4f317e8a6d0a0654497c1719

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require 'ehbrs_ruby_utils/bga/parsers/game_in_progress'
require 'ehbrs_ruby_utils/bga/urls'
require 'eac_ruby_utils/core_ext'

module EhbrsRubyUtils
  module Bga
    class Session < ::SimpleDelegator
      class PlayerTablesOnGameInProgress
        include ::EhbrsRubyUtils::Bga::Urls
        enable_method_class
        enable_simple_cache
        common_constructor :session, :player_id

        WAIT_FOR_RESULT_SECONDS = 60

        def result
          navigate_to_page
          result_data
        end

        # @return [Addressable::URI]
        def url
          player_game_in_progress_url(player_id)
        end

        private

        def current_data
          ::EhbrsRubyUtils::Bga::Parsers::GameInProgress.from_content(session.current_source).data
        end

        # @return [Array<Hash>]
        def result_data
          cr = nil
          session.wait(WAIT_FOR_RESULT_SECONDS).until do
            scroll_down
            cr = current_data
            cr.fetch(:tables).count == cr.fetch(:table_count)
          end
          cr.fetch(:tables)
        end

        def navigate_to_page
          session.navigate.to url
        end

        def scroll_down
          session.scroll_down_by(90)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ehbrs_ruby_utils-0.44.3 lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb
ehbrs_ruby_utils-0.44.2 lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb
ehbrs_ruby_utils-0.44.1 lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb
ehbrs_ruby_utils-0.44.0 lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb