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 +4 -4
- data/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress.rb +12 -1
- data/lib/ehbrs_ruby_utils/bga/session/cookies_consent.rb +19 -0
- data/lib/ehbrs_ruby_utils/bga/session/login.rb +24 -6
- data/lib/ehbrs_ruby_utils/bga/session/skip_trophies.rb +3 -2
- data/lib/ehbrs_ruby_utils/bga/session/user.rb +2 -2
- data/lib/ehbrs_ruby_utils/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e27fa8e7b9de67f4c480a9d60988c49fdcd84240e1932c41f73eb46802e974d4
|
|
4
|
+
data.tar.gz: cafca570ed8faae4d48ea9be69bced3aa0dadf987a6b0ee7d767b5c544133c4e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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(
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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 = "
|
|
15
|
+
find_or_not_element(xpath: '//*[@id = "real_player_name"]')&.attribute('innerHTML')&.strip
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def on_logged(&block)
|
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.
|
|
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
|