ehbrs_ruby_utils 0.50.0 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab0154fa6393d2e1f167cae506bdd5fbf7b5a107feb7f059625cb1929c44d3a4
4
- data.tar.gz: a709b36805a65f3d2ecdd69dc1cf7c830536f8a7d1ab9dbd228995a918c19ad4
3
+ metadata.gz: e27fa8e7b9de67f4c480a9d60988c49fdcd84240e1932c41f73eb46802e974d4
4
+ data.tar.gz: cafca570ed8faae4d48ea9be69bced3aa0dadf987a6b0ee7d767b5c544133c4e
5
5
  SHA512:
6
- metadata.gz: 213af97b1e0ef6399fa12ebb3adfe378a1f192bc63f55b40b00359cd26aba7e1f67921068ff3fab29f2ed039abf0cc24fd9fd0ed63128e8f292f5d678dfa9814
7
- data.tar.gz: '08ff1d66a9ac6a2e09c83090e073295f81dbdfc30adb10d85860e184197b9249465e0bc86dec1e59354e4a0e9edcc65c9aa904509926c84db8b4ce32868ef338'
6
+ metadata.gz: 19b9c40f54a1f47eed3cdd57c6fced7378b3e67442e65d775a15b2c8ecd8c4460f8aace63bf5b470d243e245561a841a452b78f196638ed8ffab7d8b0a227ef2
7
+ data.tar.gz: edb00210dad61f083e695f1f0258b9f03a973e9d42b7b4a2239c58a290bb3e273e0bc11c8c9e5f9507b6817526e3aa8bcb44c14c7b13b544f23aab3a10ce593c
@@ -7,6 +7,7 @@ module EhbrsRubyUtils
7
7
  DEFAULT_STATUS = 'asyncplay'
8
8
  ID_PARSER = /table=(\d+)/.to_parser { |m| m[1].to_i }
9
9
  ITEMS_XPATH = '//*[@id = "section-play"]//a[contains(@href, "table=")]'
10
+ NO_TABLES_XPATH = '//p[normalize-space(text()) = "Nenhum jogo em andamento"]'
10
11
  STATUS_CLASS_PATTERN = /\Agametable_status_(.+)\z/
11
12
  STATUS_CLASS_PARSER = STATUS_CLASS_PATTERN.to_parser { |m| m[1] }
12
13
  TABLE_COUNT_XPATH =
@@ -37,7 +38,17 @@ module EhbrsRubyUtils
37
38
 
38
39
  # @return [Integer]
39
40
  def table_count
40
- nokogiri.at_xpath(TABLE_COUNT_XPATH).if_present(-1) { |v| v.text.to_i }
41
+ nokogiri.at_xpath(TABLE_COUNT_XPATH).if_present(no_tables_count) { |v| v.text.to_i }
42
+ end
43
+
44
+ # @return [Integer]
45
+ def no_tables_count
46
+ no_tables? ? 0 : -1
47
+ end
48
+
49
+ # @return [Boolean]
50
+ def no_tables?
51
+ nokogiri.at_xpath(NO_TABLES_XPATH).present?
41
52
  end
42
53
  end
43
54
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Bga
5
+ class Session < ::SimpleDelegator
6
+ module CookiesConsent
7
+ REJECT_ALL_BUTTON_SELECTOR = { id: 'didomi-notice-disagree-button' }.freeze
8
+ REJECT_ALL_BUTTON_TIMEOUT = 5
9
+
10
+ # @return [void]
11
+ def dismiss_cookies_banner
12
+ wait_for_click(REJECT_ALL_BUTTON_SELECTOR, REJECT_ALL_BUTTON_TIMEOUT)
13
+ rescue ::Selenium::WebDriver::Error::TimeoutError
14
+ nil
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,14 +5,21 @@ module EhbrsRubyUtils
5
5
  class Session < ::SimpleDelegator
6
6
  module Login
7
7
  LOGIN_PATH = 'account'
8
- USERNAME_INPUT_ID = 'username_input'
9
- PASSWORD_INPUT_ID = 'password_input'
10
- SUBMIT_ID = 'login_button'
8
+ STEP1_SELECTOR = { css: '.bga-account-manager-form__step1' }.freeze
9
+ STEP2_SELECTOR = { css: '.bga-account-manager-form__step2' }.freeze
10
+ EMAIL_INPUT_SELECTOR = { css: "#{STEP1_SELECTOR[:css]} input[name=\"email\"]" }.freeze
11
+ NEXT_BUTTON_SELECTOR = { css: "#{STEP1_SELECTOR[:css]} a.bga-button--blue" }.freeze
12
+ PASSWORD_INPUT_SELECTOR = {
13
+ css: "#{STEP2_SELECTOR[:css]} input[type=\"password\"]"
14
+ }.freeze
15
+ LOGIN_BUTTON_SELECTOR = { css: "#{STEP2_SELECTOR[:css]} a.bga-button--blue" }.freeze
16
+ URL_LOGIN_PAGE_COMPONENT = 'page=login'
11
17
 
12
18
  # @return [Boolean]
13
19
  def login # rubocop:disable Naming/PredicateMethod
14
20
  navigate_to_login_page
15
21
  input_username
22
+ submit_username
16
23
  input_password
17
24
  submit_login
18
25
  logged?
@@ -26,18 +33,29 @@ module EhbrsRubyUtils
26
33
 
27
34
  def navigate_to_login_page
28
35
  navigate.to(login_url)
36
+ dismiss_cookies_banner
29
37
  end
30
38
 
31
39
  def input_username
32
- wait_for_element(id: USERNAME_INPUT_ID).send_keys(username)
40
+ wait_for_element(EMAIL_INPUT_SELECTOR).send_keys(username)
41
+ end
42
+
43
+ def submit_username
44
+ wait_for_click(NEXT_BUTTON_SELECTOR)
33
45
  end
34
46
 
35
47
  def input_password
36
- wait_for_element(id: PASSWORD_INPUT_ID).send_keys(password)
48
+ wait_for_element(PASSWORD_INPUT_SELECTOR).send_keys(password)
37
49
  end
38
50
 
51
+ # @return [void]
39
52
  def submit_login
40
- wait_for_click(id: SUBMIT_ID)
53
+ wait_for_click(LOGIN_BUTTON_SELECTOR)
54
+ begin
55
+ wait.until { current_url.exclude?(URL_LOGIN_PAGE_COMPONENT) }
56
+ rescue ::Selenium::WebDriver::Error::TimeoutError
57
+ nil
58
+ end
41
59
  end
42
60
  end
43
61
  end
@@ -17,12 +17,13 @@ module EhbrsRubyUtils
17
17
  e
18
18
  end
19
19
 
20
- def on_skip_trophies(...)
21
- error = on_rescue_timeout(...)
20
+ def on_skip_trophies(&block)
21
+ error = on_rescue_timeout(&block)
22
22
  return unless error
23
23
  raise error unless skip_trophy_overlay?
24
24
 
25
25
  skip_trophies
26
+ block.call
26
27
  end
27
28
 
28
29
  def skip_trophies
@@ -10,9 +10,9 @@ module EhbrsRubyUtils
10
10
  logged_username == username
11
11
  end
12
12
 
13
- # @return [String]
13
+ # @return [String, nil]
14
14
  def logged_username
15
- find_or_not_element(xpath: '//*[@id = "connected_username"]').attribute('innerHTML').strip
15
+ find_or_not_element(xpath: '//*[@id = "real_player_name"]')&.attribute('innerHTML')&.strip
16
16
  end
17
17
 
18
18
  def on_logged(&block)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EhbrsRubyUtils
4
- VERSION = '0.50.0'
4
+ VERSION = '0.50.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehbrs_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.50.0
4
+ version: 0.50.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
@@ -292,6 +292,7 @@ files:
292
292
  - lib/ehbrs_ruby_utils/bga/parsers/table/options.rb
293
293
  - lib/ehbrs_ruby_utils/bga/player.rb
294
294
  - lib/ehbrs_ruby_utils/bga/session.rb
295
+ - lib/ehbrs_ruby_utils/bga/session/cookies_consent.rb
295
296
  - lib/ehbrs_ruby_utils/bga/session/login.rb
296
297
  - lib/ehbrs_ruby_utils/bga/session/player.rb
297
298
  - lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb