ehbrs_ruby_utils 0.24.1 → 0.25.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/session/player.rb +1 -12
- data/lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_stats.rb +2 -3
- data/lib/ehbrs_ruby_utils/bga/session/skip_trophies.rb +45 -0
- data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_option.rb +18 -0
- data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_player.rb +30 -0
- data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter.rb +66 -0
- data/lib/ehbrs_ruby_utils/version.rb +1 -1
- metadata +28 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c7b8c03f444eeecd6bc0cf3294b7fdb87d853e794d882a33075fc144d6e0643
|
4
|
+
data.tar.gz: 6d9ea47d713deb5f42930df49bf59beaa5d7feeadcaf1f317c2f72265e5645ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 337fc2b2871c7546da3c36e7362463541466f77f94a32ac7813c68692dce1c0e0883d6dd765bbc1b0226a502ed0a9049f6b49debbf920f68d370e2b478ead4b5
|
7
|
+
data.tar.gz: db9aefd67166403008410368a68b5bde75777b3d819b7e0c829fb0b83a687af08f7b3e320ce2d840a0cfd38abaca8fbdf036adc785c3de4fbe8ae9451e5a4241
|
@@ -1,26 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'ehbrs_ruby_utils/bga/parsers/game_stats'
|
4
|
-
require 'ehbrs_ruby_utils/bga/urls'
|
5
3
|
require 'eac_ruby_utils/core_ext'
|
6
4
|
|
7
5
|
module EhbrsRubyUtils
|
8
6
|
module Bga
|
9
7
|
class Session < ::SimpleDelegator
|
10
8
|
class Player
|
11
|
-
include ::EhbrsRubyUtils::Bga::Urls
|
12
|
-
GAME_HISTORY_XPATH = '//h3[text() = "Games history"]'
|
13
9
|
common_constructor :session, :player_id
|
14
10
|
|
15
11
|
def tables
|
16
|
-
session.
|
17
|
-
session.wait_for_element(xpath: GAME_HISTORY_XPATH)
|
18
|
-
::EhbrsRubyUtils::Bga::Parsers::GameStats.from_content(session.current_source).data
|
19
|
-
end
|
20
|
-
|
21
|
-
# @return [Addressable::URI]
|
22
|
-
def game_stats_url
|
23
|
-
session.url("/gamestats?player=#{player_id}")
|
12
|
+
session.player_tables_on_game_stats(player_id)
|
24
13
|
end
|
25
14
|
end
|
26
15
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'ehbrs_ruby_utils/bga/parsers/
|
4
|
-
require 'ehbrs_ruby_utils/bga/table'
|
3
|
+
require 'ehbrs_ruby_utils/bga/parsers/game_stats'
|
5
4
|
require 'ehbrs_ruby_utils/bga/urls'
|
6
5
|
require 'eac_ruby_utils/core_ext'
|
7
6
|
|
@@ -56,7 +55,7 @@ module EhbrsRubyUtils
|
|
56
55
|
def list_end_reached?
|
57
56
|
previous_count = current_data.count
|
58
57
|
result = nil
|
59
|
-
session.wait_for_click(id: SEE_MORE_BUTTON_ID)
|
58
|
+
session.on_skip_trophies { session.wait_for_click(id: SEE_MORE_BUTTON_ID) }
|
60
59
|
session.wait.until do
|
61
60
|
result = list_end_reached_non_waiting(previous_count)
|
62
61
|
!result.nil?
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Bga
|
7
|
+
class Session < ::SimpleDelegator
|
8
|
+
module SkipTrophies
|
9
|
+
TROPHY_SKIP_BUTTON_XPATH = '//*[@id = "splashedNotifications_overlay"]' \
|
10
|
+
'//*[starts-with(@id, "continue_btn_")]'
|
11
|
+
TROPHY_SKIP_TIMEOUT = 5
|
12
|
+
|
13
|
+
# @param &block [Proc]
|
14
|
+
# @return [Selenium::WebDriver::Error::TimeoutError, nil]
|
15
|
+
def on_rescue_timeout(&block)
|
16
|
+
block.call
|
17
|
+
nil
|
18
|
+
rescue ::Selenium::WebDriver::Error::TimeoutError => e
|
19
|
+
e
|
20
|
+
end
|
21
|
+
|
22
|
+
def on_skip_trophies(&block)
|
23
|
+
error = on_rescue_timeout(&block)
|
24
|
+
return unless error
|
25
|
+
raise error unless skip_trophy_overlay?
|
26
|
+
|
27
|
+
skip_trophies
|
28
|
+
end
|
29
|
+
|
30
|
+
def skip_trophies
|
31
|
+
loop do
|
32
|
+
wait_for_click({ xpath: TROPHY_SKIP_BUTTON_XPATH }, TROPHY_SKIP_TIMEOUT)
|
33
|
+
rescue ::Selenium::WebDriver::Error::TimeoutError
|
34
|
+
break
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Boolean]
|
39
|
+
def skip_trophy_overlay?
|
40
|
+
find_element(xpath: TROPHY_SKIP_BUTTON_XPATH).present?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Bga
|
7
|
+
class TableWhatsappFormatter
|
8
|
+
class FormatOption
|
9
|
+
enable_method_class
|
10
|
+
common_constructor :table_formatter, :option
|
11
|
+
|
12
|
+
def result
|
13
|
+
"*#{option.label}:* #{option.value}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Bga
|
7
|
+
class TableWhatsappFormatter
|
8
|
+
class FormatPlayer
|
9
|
+
enable_method_class
|
10
|
+
common_constructor :table_formatter, :player
|
11
|
+
|
12
|
+
FIELD_SEPARATOR = ' - '
|
13
|
+
|
14
|
+
def result
|
15
|
+
%w[table_rank name score].map { |v| send(v) }.join(FIELD_SEPARATOR)
|
16
|
+
end
|
17
|
+
|
18
|
+
def table_rank
|
19
|
+
"*#{player.table_rank}º*"
|
20
|
+
end
|
21
|
+
|
22
|
+
delegate :name, to: :player
|
23
|
+
|
24
|
+
def score
|
25
|
+
"⭐ #{player.score}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/bga/session'
|
4
|
+
require 'ehbrs_ruby_utils/executables'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module EhbrsRubyUtils
|
8
|
+
module Bga
|
9
|
+
class TableWhatsappFormatter
|
10
|
+
enable_simple_cache
|
11
|
+
common_constructor :table
|
12
|
+
|
13
|
+
TITLE_BEFORE = 0x22D8.chr(::Encoding::UTF_8) + ' '
|
14
|
+
TITLE_AFTER = ' ' + 0x22D9.chr(::Encoding::UTF_8)
|
15
|
+
|
16
|
+
ROOT_ITENS = {
|
17
|
+
'Jogo' => :game_name,
|
18
|
+
'Criada em' => :creation_time,
|
19
|
+
'Duração' => :estimated_duration,
|
20
|
+
'Endereço' => :url
|
21
|
+
}.freeze
|
22
|
+
SECTION_SEPARATOR = "\n\n"
|
23
|
+
|
24
|
+
def perform
|
25
|
+
infov 'Fetching table', table_id
|
26
|
+
infov 'Message', "<<<EOS\n#{to_message}\nEOS\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
[root_items_to_s, players_to_s, options_to_s].map(&:strip).join(SECTION_SEPARATOR)
|
31
|
+
end
|
32
|
+
|
33
|
+
def root_items_to_s
|
34
|
+
title_to_s('Mesa terminada') + ROOT_ITENS.map { |k, v| "*#{k}*: #{table.send(v)}" }
|
35
|
+
.join("\n")
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [String]
|
39
|
+
def game_conceded_to_s
|
40
|
+
table.game_conceded? ? "*Derrota admitida*\n\n" : ''
|
41
|
+
end
|
42
|
+
|
43
|
+
def players_to_s
|
44
|
+
title_to_s('Resultado') + game_conceded_to_s + players.join("\n")
|
45
|
+
end
|
46
|
+
|
47
|
+
def options_to_s
|
48
|
+
title_to_s('Opções') + options.join("\n")
|
49
|
+
end
|
50
|
+
|
51
|
+
def title_to_s(title)
|
52
|
+
"*#{TITLE_BEFORE}#{title}#{TITLE_AFTER}*\n\n"
|
53
|
+
end
|
54
|
+
|
55
|
+
def players
|
56
|
+
table.players.map { |player| format_player(player) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def options
|
60
|
+
table.options.map { |player| format_option(player) }
|
61
|
+
end
|
62
|
+
|
63
|
+
require_sub __FILE__, require_mode: :kernel
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehbrs_ruby_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha
|
@@ -37,6 +37,9 @@ dependencies:
|
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0.19'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.19.1
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -44,20 +47,37 @@ dependencies:
|
|
44
47
|
- - "~>"
|
45
48
|
- !ruby/object:Gem::Version
|
46
49
|
version: '0.19'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.19.1
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: aranha-selenium
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.6'
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.6'
|
47
67
|
- !ruby/object:Gem::Dependency
|
48
68
|
name: avm
|
49
69
|
requirement: !ruby/object:Gem::Requirement
|
50
70
|
requirements:
|
51
71
|
- - "~>"
|
52
72
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
73
|
+
version: '0.76'
|
54
74
|
type: :runtime
|
55
75
|
prerelease: false
|
56
76
|
version_requirements: !ruby/object:Gem::Requirement
|
57
77
|
requirements:
|
58
78
|
- - "~>"
|
59
79
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0.
|
80
|
+
version: '0.76'
|
61
81
|
- !ruby/object:Gem::Dependency
|
62
82
|
name: eac_fs
|
63
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,10 +226,14 @@ files:
|
|
206
226
|
- lib/ehbrs_ruby_utils/bga/session/login.rb
|
207
227
|
- lib/ehbrs_ruby_utils/bga/session/player.rb
|
208
228
|
- lib/ehbrs_ruby_utils/bga/session/player_tables_on_game_stats.rb
|
229
|
+
- lib/ehbrs_ruby_utils/bga/session/skip_trophies.rb
|
209
230
|
- lib/ehbrs_ruby_utils/bga/session/table.rb
|
210
231
|
- lib/ehbrs_ruby_utils/bga/table.rb
|
211
232
|
- lib/ehbrs_ruby_utils/bga/table/option.rb
|
212
233
|
- lib/ehbrs_ruby_utils/bga/table/player.rb
|
234
|
+
- lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter.rb
|
235
|
+
- lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_option.rb
|
236
|
+
- lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_player.rb
|
213
237
|
- lib/ehbrs_ruby_utils/bga/urls.rb
|
214
238
|
- lib/ehbrs_ruby_utils/circular_list_spreader.rb
|
215
239
|
- lib/ehbrs_ruby_utils/circular_list_spreader/base_level.rb
|