ehbrs_ruby_utils 0.49.2 → 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: f88448e94166aac457473a3bb8f01b024976d82ec7ed583c8b02386423f45ae1
4
- data.tar.gz: 1d441b9435e55eca9f6fa2c2ad74572fa8f1ed59751bbe6ac8ab30947af94bd9
3
+ metadata.gz: e27fa8e7b9de67f4c480a9d60988c49fdcd84240e1932c41f73eb46802e974d4
4
+ data.tar.gz: cafca570ed8faae4d48ea9be69bced3aa0dadf987a6b0ee7d767b5c544133c4e
5
5
  SHA512:
6
- metadata.gz: 678781266398ecd15d9e1e4b2e71fec1d597800f33a44a6e7b2d63128c08fb52f93b29cfa5b2e44b325f9b8b5266db2afecd9cccf862c01685f92702dbab68eb
7
- data.tar.gz: 8897830690da692a032fe2b3222acc37f258ddd51624b0e91ad1a2911ea604a05a98217b9da60036170382d10d6b0a8929b7c008bb806dd40cc03d97390b0362
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)
@@ -61,7 +61,7 @@ module EhbrsRubyUtils
61
61
  def file_type?(*include)
62
62
  return false unless ::File.file?(file)
63
63
 
64
- include.any? { |i| file_type.include?(i) } # rubocop:disable Style/ArrayIntersect
64
+ include.any? { |i| file_type.include?(i) }
65
65
  end
66
66
 
67
67
  def file_type_uncached
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EhbrsRubyUtils
4
- VERSION = '0.49.2'
4
+ VERSION = '0.50.1'
5
5
  end
@@ -28,6 +28,15 @@ module EhbrsRubyUtils
28
28
  end
29
29
  end
30
30
 
31
+ # @return [ActiveSupport::Duration, nil]
32
+ def duration
33
+ probe_data[:format].if_present do |x|
34
+ x[:duration].if_present do |v|
35
+ ::ActiveSupport::Duration.build(v.to_f)
36
+ end
37
+ end
38
+ end
39
+
31
40
  # @param provider [UltimateLyrics::Provider]
32
41
  # @return [UltimateLyrics::Lyrics]
33
42
  def lyrics_by_provider(provider)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehbrs_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.49.2
4
+ version: 0.50.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-07-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: aranha
@@ -51,6 +50,9 @@ dependencies:
51
50
  - - "~>"
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0.14'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.14.1
54
56
  type: :runtime
55
57
  prerelease: false
56
58
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,26 +60,23 @@ dependencies:
58
60
  - - "~>"
59
61
  - !ruby/object:Gem::Version
60
62
  version: '0.14'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.14.1
61
66
  - !ruby/object:Gem::Dependency
62
67
  name: avm
63
68
  requirement: !ruby/object:Gem::Requirement
64
69
  requirements:
65
70
  - - "~>"
66
71
  - !ruby/object:Gem::Version
67
- version: '0.102'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.102.3
72
+ version: '0.103'
71
73
  type: :runtime
72
74
  prerelease: false
73
75
  version_requirements: !ruby/object:Gem::Requirement
74
76
  requirements:
75
77
  - - "~>"
76
78
  - !ruby/object:Gem::Version
77
- version: '0.102'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.102.3
79
+ version: '0.103'
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: avm-eac_rails_base0
83
82
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +106,7 @@ dependencies:
107
106
  version: '3.5'
108
107
  - - ">="
109
108
  - !ruby/object:Gem::Version
110
- version: 3.5.7
109
+ version: 3.5.8
111
110
  type: :runtime
112
111
  prerelease: false
113
112
  version_requirements: !ruby/object:Gem::Requirement
@@ -117,7 +116,7 @@ dependencies:
117
116
  version: '3.5'
118
117
  - - ">="
119
118
  - !ruby/object:Gem::Version
120
- version: 3.5.7
119
+ version: 3.5.8
121
120
  - !ruby/object:Gem::Dependency
122
121
  name: eac_fs
123
122
  requirement: !ruby/object:Gem::Requirement
@@ -127,7 +126,7 @@ dependencies:
127
126
  version: '0.20'
128
127
  - - ">="
129
128
  - !ruby/object:Gem::Version
130
- version: 0.20.2
129
+ version: 0.20.3
131
130
  type: :runtime
132
131
  prerelease: false
133
132
  version_requirements: !ruby/object:Gem::Requirement
@@ -137,7 +136,7 @@ dependencies:
137
136
  version: '0.20'
138
137
  - - ">="
139
138
  - !ruby/object:Gem::Version
140
- version: 0.20.2
139
+ version: 0.20.3
141
140
  - !ruby/object:Gem::Dependency
142
141
  name: eac_rest
143
142
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +158,7 @@ dependencies:
159
158
  - - "~>"
160
159
  - !ruby/object:Gem::Version
161
160
  version: '0.1'
162
- - - "~>"
161
+ - - ">="
163
162
  - !ruby/object:Gem::Version
164
163
  version: 0.1.1
165
164
  type: :runtime
@@ -169,7 +168,7 @@ dependencies:
169
168
  - - "~>"
170
169
  - !ruby/object:Gem::Version
171
170
  version: '0.1'
172
- - - "~>"
171
+ - - ">="
173
172
  - !ruby/object:Gem::Version
174
173
  version: 0.1.1
175
174
  - !ruby/object:Gem::Dependency
@@ -260,16 +259,14 @@ dependencies:
260
259
  requirements:
261
260
  - - "~>"
262
261
  - !ruby/object:Gem::Version
263
- version: '0.14'
262
+ version: '0.15'
264
263
  type: :development
265
264
  prerelease: false
266
265
  version_requirements: !ruby/object:Gem::Requirement
267
266
  requirements:
268
267
  - - "~>"
269
268
  - !ruby/object:Gem::Version
270
- version: '0.14'
271
- description:
272
- email:
269
+ version: '0.15'
273
270
  executables: []
274
271
  extensions: []
275
272
  extra_rdoc_files: []
@@ -295,6 +292,7 @@ files:
295
292
  - lib/ehbrs_ruby_utils/bga/parsers/table/options.rb
296
293
  - lib/ehbrs_ruby_utils/bga/player.rb
297
294
  - lib/ehbrs_ruby_utils/bga/session.rb
295
+ - lib/ehbrs_ruby_utils/bga/session/cookies_consent.rb
298
296
  - lib/ehbrs_ruby_utils/bga/session/login.rb
299
297
  - lib/ehbrs_ruby_utils/bga/session/player.rb
300
298
  - lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_in_progress.rb
@@ -449,10 +447,8 @@ files:
449
447
  - template/ehbrs_ruby_utils/music/lyrics_book/main.html.erb
450
448
  - template/ehbrs_ruby_utils/music/lyrics_book/resource/main.html.erb
451
449
  - template/ehbrs_ruby_utils/music/lyrics_book/song/inner.html.erb
452
- homepage:
453
450
  licenses: []
454
451
  metadata: {}
455
- post_install_message:
456
452
  rdoc_options: []
457
453
  require_paths:
458
454
  - lib
@@ -467,8 +463,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
467
463
  - !ruby/object:Gem::Version
468
464
  version: '0'
469
465
  requirements: []
470
- rubygems_version: 3.4.19
471
- signing_key:
466
+ rubygems_version: 3.6.9
472
467
  specification_version: 4
473
468
  summary: Utilities for EHB/RS's Ruby projects.
474
469
  test_files: []