user_agent_parser 2.12.0 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7994324d50b5df6f804fbdb9af163f3f0f289d2e960c00ea4eacc3db560bba3e
4
- data.tar.gz: 168efdf63dfacf1a687e33db092bd226428f3279d995d6bf6b8b89fdd9056121
3
+ metadata.gz: 128d87181e38544c6fb19126db965dc32a1c26f4e1a6d679e4aba0f7b2ff6784
4
+ data.tar.gz: b6860eb9701b8daa8d9bf7cc9aaa504f0d6f225e2568cf0b5c1b6bd5d3bb0d77
5
5
  SHA512:
6
- metadata.gz: 275dfd67d2357655407fa09dcea6959d15bd184cba1f3cd1607108d0a72548c44a2e8d015bd230ed3adcec9036d79035c969a98eb499fe83efbab97360055fea
7
- data.tar.gz: 708f4ce8447e4fa0474f5798c4e155699a85555191ffda29ec528c1dd3d835a968520ff9ea88af1c9e3c075bbf4603003a756d5e40b862f7ad8af6607d3e1570
6
+ metadata.gz: 8e2307bcc43059d226e1cbde38dc0014b3dae7ebbd35fe01562b51a364c148a0d9565549e4842e011cf2bceb9bcd852ddadf38ae584728b90409ead67142c51b
7
+ data.tar.gz: f7b716aec712a11b5fd7063f8aafb97e2e98b06c97795050ef043646c876cbeae29234727bb96b9d1248da32caa1d3a9562d8bdd25234e29c3c77ee1348a8f8b
@@ -4,6 +4,8 @@ require 'yaml'
4
4
 
5
5
  module UserAgentParser
6
6
  class Parser
7
+ extend Gem::Deprecate
8
+
7
9
  FAMILY_REPLACEMENT_KEYS = %w[
8
10
  family_replacement
9
11
  v1_replacement
@@ -22,11 +24,13 @@ module UserAgentParser
22
24
 
23
25
  private_constant :FAMILY_REPLACEMENT_KEYS, :OS_REPLACEMENT_KEYS
24
26
 
25
- attr_reader :patterns_path
27
+ attr_reader :patterns_paths
28
+
29
+ def initialize(patterns_path: nil, patterns_paths: [])
30
+ @patterns_paths = [patterns_path, *patterns_paths].compact
31
+ @patterns_paths = [UserAgentParser::DefaultPatternsPath] if @patterns_paths.empty?
26
32
 
27
- def initialize(options = {})
28
- @patterns_path = options[:patterns_path] || UserAgentParser::DefaultPatternsPath
29
- @ua_patterns, @os_patterns, @device_patterns = load_patterns(patterns_path)
33
+ @ua_patterns, @os_patterns, @device_patterns = load_patterns(@patterns_paths)
30
34
  end
31
35
 
32
36
  def parse(user_agent)
@@ -35,9 +39,23 @@ module UserAgentParser
35
39
  parse_ua(user_agent, os, device)
36
40
  end
37
41
 
42
+ def patterns_path
43
+ patterns_paths.first
44
+ end
45
+ deprecate :patterns_path, :patterns_paths, 2022, 12
46
+
38
47
  private
39
48
 
40
- def load_patterns(path)
49
+ def load_patterns(patterns_paths)
50
+ patterns_paths.each_with_object([[], [], []]) do |path, patterns|
51
+ ua_patterns, os_patterns, device_patterns = load_patterns_file(path)
52
+ patterns[0] += ua_patterns
53
+ patterns[1] += os_patterns
54
+ patterns[2] += device_patterns
55
+ end
56
+ end
57
+
58
+ def load_patterns_file(path)
41
59
  yml = begin
42
60
  YAML.load_file(path, freeze: true)
43
61
  rescue ArgumentError
@@ -88,24 +106,11 @@ module UserAgentParser
88
106
  end
89
107
  end
90
108
 
91
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
92
- def first_pattern_match(patterns, value)
93
- patterns.each do |pattern|
94
- if pattern[:regex].match?(value)
95
- return [pattern, pattern[:regex].match(value)]
96
- end
97
- end
98
- nil
99
- end
100
- else
101
- def first_pattern_match(patterns, value)
102
- patterns.each do |pattern|
103
- if (match = pattern[:regex].match(value))
104
- return [pattern, match]
105
- end
106
- end
107
- nil
109
+ def first_pattern_match(patterns, value)
110
+ patterns.each do |pattern|
111
+ return [pattern, pattern[:regex].match(value)] if pattern[:regex].match?(value)
108
112
  end
113
+ nil
109
114
  end
110
115
 
111
116
  def user_agent_from_pattern_match(pattern, match, os = nil, device = nil)
@@ -10,7 +10,7 @@ module UserAgentParser
10
10
  DefaultPatternsPath = File.join(File.dirname(__FILE__), '../vendor/uap-core/regexes.yaml')
11
11
 
12
12
  # Parse the given +user_agent_string+, returning a +UserAgent+
13
- def self.parse(user_agent_string, options = {})
14
- Parser.new(options).parse(user_agent_string)
13
+ def self.parse(user_agent_string, **args)
14
+ Parser.new(**args).parse(user_agent_string)
15
15
  end
16
16
  end
@@ -932,7 +932,7 @@ user_agent_parsers:
932
932
  family_replacement: 'Python Requests'
933
933
 
934
934
  # headless user-agents
935
- - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
935
+ - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC|HTTPie)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
936
936
 
937
937
  # CloudFoundry
938
938
  - regex: '^(cf)\/(\d+)\.(\d+)\.(\S+)'
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_agent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.12.0
4
+ version: 2.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lucas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-21 00:00:00.000000000 Z
11
+ date: 2023-01-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A simple, comprehensive Ruby gem for parsing user agent strings with
14
- the help of BrowserScope's UA database
13
+ description: |
14
+ A simple, comprehensive Ruby gem for parsing user agent strings
15
+ with the help of BrowserScope's UserAgent database
15
16
  email: t@toolmantim.com
16
17
  executables:
17
18
  - user_agent_parser
@@ -47,9 +48,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
48
  - !ruby/object:Gem::Version
48
49
  version: '0'
49
50
  requirements: []
50
- rubygems_version: 3.3.24
51
+ rubygems_version: 3.4.6
51
52
  signing_key:
52
53
  specification_version: 4
53
- summary: A simple, comprehensive Ruby gem for parsing user agent strings with the
54
- help of BrowserScope's UA database
54
+ summary: Parsing user agent strings with the help of BrowserScope's UA database
55
55
  test_files: []