ehbrs-tools 0.7.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ehbrs/executables.rb +7 -1
  3. data/lib/ehbrs/fs.rb +9 -0
  4. data/lib/ehbrs/fs/compressed_package.rb +48 -0
  5. data/lib/ehbrs/gems.rb +37 -0
  6. data/lib/ehbrs/google.rb +9 -0
  7. data/lib/ehbrs/google/translate.rb +11 -0
  8. data/lib/ehbrs/google/translate/session.rb +61 -0
  9. data/lib/ehbrs/runner/finances.rb +19 -0
  10. data/lib/ehbrs/runner/finances/bb_browser.rb +40 -0
  11. data/lib/ehbrs/runner/google.rb +19 -0
  12. data/lib/ehbrs/runner/google/translate.rb +92 -0
  13. data/lib/ehbrs/runner/self.rb +19 -0
  14. data/lib/ehbrs/runner/self/test.rb +30 -0
  15. data/lib/ehbrs/runner/videos/extract.rb +71 -0
  16. data/lib/ehbrs/runner/videos/series.rb +21 -0
  17. data/lib/ehbrs/runner/videos/series/rename.rb +75 -0
  18. data/lib/ehbrs/tools/version.rb +1 -1
  19. data/lib/ehbrs/vg/wii/game_file.rb +13 -0
  20. data/lib/ehbrs/videos/extract.rb +11 -0
  21. data/lib/ehbrs/videos/extract/package.rb +75 -0
  22. data/lib/ehbrs/videos/extract/package_file.rb +54 -0
  23. data/lib/ehbrs/videos/series.rb +11 -0
  24. data/lib/ehbrs/videos/series/rename.rb +13 -0
  25. data/lib/ehbrs/videos/series/rename/directory_group.rb +28 -0
  26. data/lib/ehbrs/videos/series/rename/file.rb +114 -0
  27. data/lib/ehbrs/videos/series/rename/file/basename_parser.rb +44 -0
  28. data/lib/ehbrs/videos/series/rename/file/options.rb +30 -0
  29. data/lib/ehbrs/videos/series/rename/line_result.rb +26 -0
  30. data/lib/ehbrs/videos/series/rename/line_result_group.rb +39 -0
  31. data/lib/ehbrs/videos/series/rename/results_builder.rb +32 -0
  32. data/lib/ehbrs/videos/series/rename/season_group.rb +39 -0
  33. data/vendor/aranha-selenium/Gemfile +5 -0
  34. data/vendor/aranha-selenium/aranha-selenium.gemspec +19 -0
  35. data/vendor/aranha-selenium/lib/aranha/selenium.rb +8 -0
  36. data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory.rb +47 -0
  37. data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/base.rb +76 -0
  38. data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/chrome.rb +28 -0
  39. data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/firefox.rb +54 -0
  40. data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/firefox_auto_download_mime_types +685 -0
  41. data/vendor/aranha-selenium/lib/aranha/selenium/session.rb +78 -0
  42. data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +7 -0
  43. data/vendor/aranha-selenium/spec/rubocop_check_spec.rb +7 -0
  44. data/vendor/aranha-selenium/spec/spec_helper.rb +100 -0
  45. data/vendor/eac_docker/Gemfile +5 -0
  46. data/vendor/eac_docker/eac_docker.gemspec +18 -0
  47. data/vendor/eac_docker/lib/eac_docker.rb +7 -0
  48. data/vendor/eac_docker/lib/eac_docker/container.rb +50 -0
  49. data/vendor/eac_docker/lib/eac_docker/executables.rb +18 -0
  50. data/vendor/eac_docker/lib/eac_docker/images.rb +9 -0
  51. data/vendor/eac_docker/lib/eac_docker/images/base.rb +14 -0
  52. data/vendor/eac_docker/lib/eac_docker/images/named.rb +30 -0
  53. data/vendor/eac_docker/lib/eac_docker/rspec.rb +17 -0
  54. data/vendor/eac_docker/lib/eac_docker/version.rb +5 -0
  55. data/vendor/eac_docker/spec/lib/eac_docker/executables_spec.rb +9 -0
  56. data/vendor/eac_docker/spec/rubocop_spec.rb +7 -0
  57. data/vendor/eac_docker/spec/spec_helper.rb +103 -0
  58. data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
  59. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_concern.rb +68 -0
  60. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs.rb +4 -12
  61. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb +1 -1
  62. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_class_methods.rb +1 -1
  63. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker.rb +1 -1
  64. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +1 -0
  65. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb +8 -0
  66. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +2 -2
  67. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb +30 -0
  68. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs_cache.rb +1 -0
  69. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable.rb +15 -0
  70. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/array_accessor.rb +28 -0
  71. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb +23 -0
  72. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/boolean_accessor.rb +16 -0
  73. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/class_methods.rb +20 -0
  74. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/common_accessor.rb +30 -0
  75. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/hash_accessor.rb +42 -0
  76. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/immutable/instance_methods.rb +21 -0
  77. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +4 -0
  78. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/lists.rb +10 -12
  79. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/symbol_list.rb +19 -0
  80. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +10 -0
  81. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb +10 -0
  82. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/patch.rb +1 -1
  83. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/require_sub.rb +2 -2
  84. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_present.rb +1 -1
  85. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash.rb +1 -3
  86. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb +72 -2
  87. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/directory.rb +7 -1
  88. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb +8 -59
  89. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_not_found_error.rb +7 -0
  90. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers.rb +25 -0
  91. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/base.rb +23 -0
  92. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/entries_reader.rb +25 -0
  93. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/generic.rb +25 -0
  94. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/hash.rb +29 -0
  95. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  96. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +85 -2
  97. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb +42 -0
  98. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb +1 -0
  99. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/console/docopt_runner_spec.rb +5 -5
  100. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/console/speaker_spec.rb +1 -1
  101. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/executable_spec.rb +4 -0
  102. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb +18 -0
  103. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/temp_spec.rb +1 -1
  104. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb +32 -0
  105. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb +1 -1
  106. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/sym_keys_hash_spec.rb +1 -1
  107. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/if_present_spec.rb +1 -1
  108. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec.rb +1 -1
  109. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_sub_spec.rb +4 -4
  110. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub_spec.rb +19 -0
  111. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub_spec/stubbed_module_a.rb +6 -0
  112. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub_spec/stubbed_not_module.rb +6 -0
  113. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby_spec.rb +22 -0
  114. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/file_spec.rb +1 -0
  115. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/searcher_spec.rb +1 -1
  116. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/yaml_spec.rb +75 -0
  117. data/vendor/eac_ruby_utils/spec/locales/pt-BR.yml +17 -0
  118. metadata +101 -2
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs/videos/series/rename/line_result'
4
+
5
+ module Ehbrs
6
+ module Videos
7
+ module Series
8
+ module Rename
9
+ class File < ::Ehbrs::Videos::Series::Rename::LineResult
10
+ module BasenameParser
11
+ FORMATS = [{
12
+ format: /(\d+)(\d{2})(\d{2})/i,
13
+ build: ->(m) { { s: padding(m[1]), e: padding(m[2]) + '-' + padding(m[3]) } }
14
+ }, {
15
+ format: /s(\d+)e(\d+)-(\d+)/i,
16
+ build: ->(m) { { s: padding(m[1]), e: padding(m[2]) + '-' + padding(m[3]) } }
17
+ }, {
18
+ format: /(\d{1,2})\s*[^\d]\s*(\d{2})/i,
19
+ build: ->(m) { { s: padding(m[1]), e: padding(m[2]) } }
20
+ }, {
21
+ format: /(\d+)(\d{2})/i,
22
+ build: ->(m) { { s: padding(m[1]), e: padding(m[2]) } }
23
+ }, {
24
+ format: /(\d{2})/i,
25
+ build: ->(m) { { s: padding(1), e: padding(m[1]) } }
26
+ }].freeze
27
+
28
+ def self.padding(string)
29
+ string.to_s.rjust(2, '0')
30
+ end
31
+
32
+ def parse_uncached
33
+ FORMATS.each do |format|
34
+ m = format.fetch(:format).match(current_name)
35
+ return format.fetch(:build).call(m) if m
36
+ end
37
+ nil
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ehbrs
4
+ module Videos
5
+ module Series
6
+ module Rename
7
+ class File
8
+ class Options
9
+ def initialize(docopt_runner_options)
10
+ @options = docopt_runner_options
11
+ end
12
+
13
+ %w[kernel confirm recursive extension].each do |method|
14
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
15
+ def #{method}
16
+ @options.fetch('--#{method}')
17
+ end
18
+ RUBY_EVAL
19
+ end
20
+
21
+ def episode_increment
22
+ r = @options.fetch('--episode-increment')
23
+ r.present? ? r.to_i : 0
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Ehbrs
6
+ module Videos
7
+ module Series
8
+ module Rename
9
+ class LineResult
10
+ enable_simple_cache
11
+ enable_console_speaker
12
+
13
+ def show(level)
14
+ out(padding_level(level) + line_out + "\n")
15
+ end
16
+
17
+ private
18
+
19
+ def padding_level(level)
20
+ (' ' * level.to_i) + '* '
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'line_result'
4
+
5
+ module Ehbrs
6
+ module Videos
7
+ module Series
8
+ module Rename
9
+ class LineResultGroup < ::Ehbrs::Videos::Series::Rename::LineResult
10
+ attr_reader :name, :children
11
+
12
+ def initialize(name, files)
13
+ @name = name
14
+ @children = build_children(files)
15
+ end
16
+
17
+ def show(level)
18
+ super(level)
19
+ children.each do |child|
20
+ child.show(level + 1)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def build_children(files)
27
+ r = {}
28
+ files.each do |file|
29
+ key = file.send(child_key)
30
+ r[key] ||= []
31
+ r[key] << file
32
+ end
33
+ r.sort.map { |v| child_class.new(v[0], v[1]) }
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs/videos/series/rename/directory_group'
4
+ require 'ehbrs/videos/series/rename/line_result_group'
5
+
6
+ module Ehbrs
7
+ module Videos
8
+ module Series
9
+ module Rename
10
+ class ResultsBuilder < LineResultGroup
11
+ def initialize(files)
12
+ super '', files
13
+ end
14
+
15
+ def line_out
16
+ 'Groups: '.cyan + children.count.to_s
17
+ end
18
+
19
+ protected
20
+
21
+ def child_key
22
+ :dirname
23
+ end
24
+
25
+ def child_class
26
+ ::Ehbrs::Videos::Series::Rename::DirectoryGroup
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'line_result'
4
+
5
+ module Ehbrs
6
+ module Videos
7
+ module Series
8
+ module Rename
9
+ class SeasonGroup < ::Ehbrs::Videos::Series::Rename::LineResult
10
+ attr_reader :season, :files
11
+
12
+ def initialize(season, files)
13
+ @season = season
14
+ @files = files.sort_by { |f| [f.episode] }
15
+ end
16
+
17
+ def line_out
18
+ 'Season: '.cyan + "#{season} (#{first_episode} - #{last_episode})"
19
+ end
20
+
21
+ def show(level)
22
+ super
23
+ files.each { |file| file.show(level + 1) }
24
+ end
25
+
26
+ private
27
+
28
+ def first_episode
29
+ files.first.episode
30
+ end
31
+
32
+ def last_episode
33
+ files.last.episode
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'aranha/selenium/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'aranha-selenium'
9
+ s.version = ::Aranha::Selenium::VERSION
10
+ s.authors = ['Esquilo Azul Company']
11
+ s.summary = 'Selenium\' utilities for Ruby.'
12
+
13
+ s.files = Dir['{lib}/**/*', 'Gemfile']
14
+
15
+ s.add_dependency 'activesupport'
16
+ s.add_dependency 'selenium-webdriver', '~> 3.142', '>= 3.142.3'
17
+
18
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.1', '>= 0.1.1'
19
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Selenium
5
+ require 'aranha/selenium/driver_factory'
6
+ require 'aranha/selenium/session'
7
+ end
8
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/hash/indifferent_access'
4
+ require 'aranha/selenium/driver_factory/base'
5
+ require 'aranha/selenium/driver_factory/chrome'
6
+ require 'aranha/selenium/driver_factory/firefox'
7
+
8
+ module Aranha
9
+ module Selenium
10
+ class DriverFactory
11
+ class << self
12
+ def create_driver(options = {})
13
+ new(options).create_driver
14
+ end
15
+ end
16
+
17
+ attr_reader :options
18
+
19
+ def initialize(options)
20
+ @options = options.with_indifferent_access.freeze
21
+ end
22
+
23
+ def create_driver
24
+ driver_class.new(driver_options).build
25
+ end
26
+
27
+ def driver_name
28
+ (options[:driver] || default_driver_name).to_s
29
+ end
30
+
31
+ def driver_class
32
+ Aranha::Selenium::DriverFactory.const_get(driver_name.classify)
33
+ rescue NameError
34
+ raise "Unknown Aranha Selenium driver: \"#{driver_name}\"" \
35
+ " (Class \"Aranha::Selenium::DriverFactory::#{driver_name.classify}\" not found)"
36
+ end
37
+
38
+ def default_driver_name
39
+ :firefox
40
+ end
41
+
42
+ def driver_options
43
+ options.except(:driver)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/json'
4
+ require 'active_support/core_ext/hash/indifferent_access'
5
+ require 'selenium-webdriver'
6
+ require 'tmpdir'
7
+
8
+ module Aranha
9
+ module Selenium
10
+ class DriverFactory
11
+ class Base
12
+ DEFAULT_DOWNLOADS_DIR = ::File.join(::Dir.tmpdir, 'aranha_downloads_dir')
13
+ DEFAULT_ACCEPT_INSECURE_CERTS = false
14
+ DEFAULT_HEADLESS = false
15
+ DEFAULT_USER_AGENT = nil
16
+
17
+ class << self
18
+ attr_writer :default_accept_insecure_certs, :default_downloads_dir, :default_headless,
19
+ :default_user_agent
20
+
21
+ def default_downloads_dir
22
+ @default_downloads_dir || DEFAULT_DOWNLOADS_DIR
23
+ end
24
+
25
+ def default_accept_insecure_certs
26
+ @default_accept_insecure_certs || DEFAULT_ACCEPT_INSECURE_CERTS
27
+ end
28
+
29
+ def default_headless
30
+ @default_headless || DEFAULT_HEADLESS
31
+ end
32
+
33
+ def default_user_agent
34
+ @default_user_agent || DEFAULT_USER_AGENT
35
+ end
36
+ end
37
+
38
+ attr_reader :options
39
+
40
+ def initialize(options)
41
+ @options = options.with_indifferent_access.freeze
42
+ end
43
+
44
+ def build
45
+ raise 'Must be overrided'
46
+ end
47
+
48
+ def downloads_dir
49
+ option_value(:downloads_dir)
50
+ end
51
+
52
+ def accept_insecure_certs?
53
+ option_value(:accept_insecure_certs)
54
+ end
55
+
56
+ def headless?
57
+ option_value(:headless)
58
+ end
59
+
60
+ def user_agent
61
+ option_value(:user_agent)
62
+ end
63
+
64
+ private
65
+
66
+ def option_value(key)
67
+ if options.key?(key)
68
+ options.fetch(key)
69
+ else
70
+ ::Aranha::Selenium::DriverFactory::Base.send("default_#{key}")
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/selenium/driver_factory/base'
4
+
5
+ module Aranha
6
+ module Selenium
7
+ class DriverFactory
8
+ class Chrome < ::Aranha::Selenium::DriverFactory::Base
9
+ def build
10
+ ::Selenium::WebDriver.for :chrome, options: chrome_options
11
+ end
12
+
13
+ private
14
+
15
+ def chrome_options
16
+ r = ::Selenium::WebDriver::Chrome::Options.new
17
+ r.add_argument('--ignore-certificate-errors') if accept_insecure_certs?
18
+ r.add_argument('--headless') if headless?
19
+ r.add_argument('--disable-popup-blocking')
20
+ r.add_argument('--disable-translate')
21
+ r.add_argument("user-agent=#{user_agent}") if user_agent.present?
22
+ r.add_preference(:download, prompt_for_download: false, default_directory: downloads_dir)
23
+ r
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/selenium/driver_factory/base'
4
+
5
+ module Aranha
6
+ module Selenium
7
+ class DriverFactory
8
+ class Firefox < ::Aranha::Selenium::DriverFactory::Base
9
+ def build
10
+ ::Selenium::WebDriver.for(
11
+ :firefox,
12
+ options: ::Selenium::WebDriver::Firefox::Options.new(
13
+ profile: build_profile,
14
+ args: build_args
15
+ ),
16
+ desired_capabilities: build_capabilities
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def build_args
23
+ r = []
24
+ r << '-headless' if headless?
25
+ r
26
+ end
27
+
28
+ def build_capabilities
29
+ if accept_insecure_certs?
30
+ ::Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)
31
+ else
32
+ ::Selenium::WebDriver::Remote::Capabilities.firefox
33
+ end
34
+ end
35
+
36
+ def build_profile
37
+ r = ::Selenium::WebDriver::Firefox::Profile.new
38
+ r['browser.download.dir'] = downloads_dir
39
+ r['browser.download.folderList'] = 2
40
+ r['browser.helperApps.neverAsk.saveToDisk'] = auto_download_mime_types.join(';')
41
+ r['pdfjs.disabled'] = true
42
+ r['general.useragent.override'] = user_agent if user_agent.present?
43
+ r
44
+ end
45
+
46
+ def auto_download_mime_types
47
+ ::File.read(
48
+ ::File.join(__dir__, 'firefox_auto_download_mime_types')
49
+ ).each_line.map(&:strip)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end