flavicon 0.2.0 → 0.3.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: e563783a7460208b999fa27b864ed99b5601a14530013b1305aa4d7756f88fa3
4
- data.tar.gz: 8da3ccc3dc46b41051f86ee134fd9607c84addae46b11ec1d75382a544d36ea9
3
+ metadata.gz: 7f1322382cafcb279436a2b1cb8acd95929d37f4a088033852f0c3f29bb1f0f1
4
+ data.tar.gz: 447b61454abd88505d85befda16f41593f3cfa596a984f0691577c03b3e361c4
5
5
  SHA512:
6
- metadata.gz: 9e91756d0691ed894ce82608842f06e67a9a8489a655e0329e07e6797662780a8ac40352c135ed96fd429888e3e512b7094f6dfa9994113b6b267cf1aff8d978
7
- data.tar.gz: 4e66b54722a0754f412ee4f46ac4f72d8a0f6ca652918917b1e6297529334d1a0816aadbc1507ae52bc9d25f73a2fa4271a96707391bb3edd795fd5c06259fd8
6
+ metadata.gz: 6530105b3ee054b15ecf6b161d268107ed33d31fbc6556e7f251a9c9c745d295481321f10025b67139e53d4fe1095f23e226232c9e00145817eda1e3799b4b9d
7
+ data.tar.gz: 12b79a6b748350435e9b5f0d6d436bfce14ddeae60eb1a222a8a6a882466eb416ec14c843ea4f26be438b3245344e161e7911ae67f8319aa51d002037952e5b9
@@ -0,0 +1,25 @@
1
+ name: Linters
2
+
3
+ on: [pull_request]
4
+
5
+ jobs:
6
+ ruby:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+
11
+ - name: Set up Ruby
12
+ uses: ruby/setup-ruby@v1
13
+
14
+ - name: RuboCop Linter
15
+ uses: reviewdog/action-rubocop@v2.1.0
16
+ with:
17
+ rubocop_version: gemfile
18
+ rubocop_extensions: rubocop-rspec:gemfile
19
+ rubocop_flags: '--parallel --force-exclusion'
20
+ github_token: ${{ secrets.GITHUB_TOKEN }}
21
+
22
+ - name: Brakeman Linter
23
+ uses: reviewdog/action-brakeman@v1
24
+ with:
25
+ github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,32 @@
1
+ name: Ruby
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+
8
+ runs-on: ubuntu-latest
9
+
10
+ strategy:
11
+ matrix:
12
+ ruby:
13
+ - 2.7
14
+ - 3.0
15
+ - 3.1
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ bundler-cache: true
25
+
26
+ - name: Run tests with RSpec
27
+ uses: paambaati/codeclimate-action@v2.5.4
28
+ env:
29
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
30
+ with:
31
+ coverageCommand: bundle exec rspec
32
+ debug: false
data/.rubocop.yml CHANGED
@@ -1,9 +1,10 @@
1
1
  require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.6
4
+ NewCops: enable
5
+ TargetRubyVersion: 2.7
5
6
 
6
- Metrics/LineLength:
7
+ Layout/LineLength:
7
8
  Max: 120
8
9
 
9
10
  Style/Documentation:
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.2
1
+ 3.1.0
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.1.0
data/Gemfile.lock CHANGED
@@ -1,36 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flavicon (0.2.0)
4
+ flavicon (0.3.0)
5
5
  nokogiri (~> 1.10)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- addressable (2.6.0)
11
- public_suffix (>= 2.0.2, < 4.0)
12
- ast (2.4.0)
13
- coderay (1.1.0)
14
- crack (0.4.3)
15
- safe_yaml (~> 1.0.0)
10
+ addressable (2.8.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ ast (2.4.2)
13
+ coderay (1.1.3)
14
+ crack (0.4.5)
15
+ rexml
16
16
  diff-lcs (1.3)
17
- docile (1.3.1)
18
- hashdiff (0.4.0)
19
- jaro_winkler (1.5.2)
20
- json (2.2.0)
21
- method_source (0.8.2)
22
- mini_portile2 (2.4.0)
23
- nokogiri (1.10.3)
24
- mini_portile2 (~> 2.4.0)
25
- parallel (1.17.0)
26
- parser (2.6.3.0)
27
- ast (~> 2.4.0)
28
- pry (0.9.12.6)
29
- coderay (~> 1.0)
30
- method_source (~> 0.8)
31
- slop (~> 3.4)
32
- public_suffix (3.1.0)
33
- rainbow (3.0.0)
17
+ docile (1.4.0)
18
+ hashdiff (1.0.1)
19
+ method_source (1.0.0)
20
+ mini_portile2 (2.7.1)
21
+ nokogiri (1.13.1)
22
+ mini_portile2 (~> 2.7.0)
23
+ racc (~> 1.4)
24
+ parallel (1.21.0)
25
+ parser (3.1.0.0)
26
+ ast (~> 2.4.1)
27
+ pry (0.14.1)
28
+ coderay (~> 1.1)
29
+ method_source (~> 1.0)
30
+ public_suffix (4.0.6)
31
+ racc (1.6.0)
32
+ rainbow (3.1.1)
33
+ regexp_parser (2.2.0)
34
+ rexml (3.2.5)
34
35
  rspec (3.8.0)
35
36
  rspec-core (~> 3.8.0)
36
37
  rspec-expectations (~> 3.8.0)
@@ -44,26 +45,29 @@ GEM
44
45
  diff-lcs (>= 1.2.0, < 2.0)
45
46
  rspec-support (~> 3.8.0)
46
47
  rspec-support (3.8.0)
47
- rubocop (0.71.0)
48
- jaro_winkler (~> 1.5.1)
48
+ rubocop (1.25.0)
49
49
  parallel (~> 1.10)
50
- parser (>= 2.6)
50
+ parser (>= 3.1.0.0)
51
51
  rainbow (>= 2.2.2, < 4.0)
52
+ regexp_parser (>= 1.8, < 3.0)
53
+ rexml
54
+ rubocop-ast (>= 1.15.1, < 2.0)
52
55
  ruby-progressbar (~> 1.7)
53
- unicode-display_width (>= 1.4.0, < 1.7)
54
- rubocop-rspec (1.33.0)
55
- rubocop (>= 0.60.0)
56
- ruby-progressbar (1.10.1)
57
- safe_yaml (1.0.5)
58
- simplecov (0.16.1)
56
+ unicode-display_width (>= 1.4.0, < 3.0)
57
+ rubocop-ast (1.15.1)
58
+ parser (>= 3.0.1.1)
59
+ rubocop-rspec (2.7.0)
60
+ rubocop (~> 1.19)
61
+ ruby-progressbar (1.11.0)
62
+ simplecov (0.21.2)
59
63
  docile (~> 1.1)
60
- json (>= 1.8, < 3)
61
- simplecov-html (~> 0.10.0)
62
- simplecov-html (0.10.2)
63
- slop (3.5.0)
64
- unicode-display_width (1.6.0)
65
- webmock (3.6.0)
66
- addressable (>= 2.3.6)
64
+ simplecov-html (~> 0.11)
65
+ simplecov_json_formatter (~> 0.1)
66
+ simplecov-html (0.12.3)
67
+ simplecov_json_formatter (0.1.3)
68
+ unicode-display_width (2.1.0)
69
+ webmock (3.14.0)
70
+ addressable (>= 2.8.0)
67
71
  crack (>= 0.3.2)
68
72
  hashdiff (>= 0.4.0, < 2.0.0)
69
73
 
@@ -75,9 +79,9 @@ DEPENDENCIES
75
79
  flavicon!
76
80
  pry (~> 0)
77
81
  rspec (~> 3.8)
78
- rubocop-rspec (~> 1.33)
79
- simplecov (~> 0.16)
82
+ rubocop-rspec (~> 2)
83
+ simplecov (~> 0.21)
80
84
  webmock (~> 3.6)
81
85
 
82
86
  BUNDLED WITH
83
- 2.0.1
87
+ 2.3.4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/flavicon.gemspec CHANGED
@@ -12,9 +12,12 @@ Gem::Specification.new do |spec|
12
12
 
13
13
  spec.summary = 'fetch favicon url for provided url'
14
14
  spec.description = 'fetch favicon url by parsing html and falling back on /favicon.ico as default'
15
- spec.homepage = 'http://github.com/hasghari/flavicon'
15
+ spec.homepage = 'https://github.com/hasghari/flavicon'
16
16
  spec.license = 'MIT'
17
17
 
18
+ spec.required_ruby_version = '>= 2.7'
19
+ spec.metadata['rubygems_mfa_required'] = 'true'
20
+
18
21
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
22
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
23
  end
@@ -25,7 +28,7 @@ Gem::Specification.new do |spec|
25
28
  spec.add_development_dependency 'bundler', '~> 2.0'
26
29
  spec.add_development_dependency 'pry', '~> 0'
27
30
  spec.add_development_dependency 'rspec', '~> 3.8'
28
- spec.add_development_dependency 'rubocop-rspec', '~> 1.33'
29
- spec.add_development_dependency 'simplecov', '~> 0.16'
31
+ spec.add_development_dependency 'rubocop-rspec', '~> 2'
32
+ spec.add_development_dependency 'simplecov', '~> 0.21'
30
33
  spec.add_development_dependency 'webmock', '~> 3.6'
31
34
  end
@@ -16,8 +16,10 @@ module Flavicon
16
16
 
17
17
  def find
18
18
  response, resolved = request(url)
19
- favicon_url = extract_from_html(response.body, resolved) || default_path(resolved)
20
- verify_favicon_url(favicon_url)
19
+
20
+ extract_from_html(response.body, resolved)
21
+ .push(default_path(resolved))
22
+ .find { |url| verify_favicon_url(url) }
21
23
  end
22
24
 
23
25
  def verify_favicon_url(url)
@@ -28,18 +30,16 @@ module Flavicon
28
30
  end
29
31
 
30
32
  def extract_from_html(html, url)
31
- link = Nokogiri::HTML(html).css('head link').find do |node|
32
- node[:rel] =~ /\A(shortcut )?icon\z/i
33
+ Nokogiri::HTML(html).css('head link').filter_map do |node|
34
+ URI.join(url, node[:href]).to_s if node[:rel] =~ /\A(shortcut )?icon\z/i
33
35
  end
34
-
35
- URI.join(url, link[:href]).to_s if link
36
36
  end
37
37
 
38
38
  def default_path(url)
39
39
  URI.join(url, '/favicon.ico').to_s
40
40
  end
41
41
 
42
- # rubocop:disable Metrics/AbcSize,MethodLength
42
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
43
43
  def request(url, limit = 10)
44
44
  raise TooManyRedirects if limit.negative?
45
45
 
@@ -60,7 +60,7 @@ module Flavicon
60
60
  [response, url]
61
61
  end
62
62
  end
63
- # rubocop:enable Metrics/AbcSize,MethodLength
63
+ # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
64
64
 
65
65
  # While the soon-to-be obsolete IETF standard RFC 2616 (HTTP 1.1) requires a complete absolute URI for redirection,
66
66
  # the most popular web browsers tolerate the passing of a relative URL as the value for a Location header field.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flavicon
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flavicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hamed Asghari
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-10 00:00:00.000000000 Z
11
+ date: 2022-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.33'
75
+ version: '2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.33'
82
+ version: '2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.16'
89
+ version: '0.21'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.16'
96
+ version: '0.21'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -117,12 +117,13 @@ extensions: []
117
117
  extra_rdoc_files: []
118
118
  files:
119
119
  - ".document"
120
+ - ".github/workflows/linters.yml"
121
+ - ".github/workflows/ruby.yml"
120
122
  - ".gitignore"
121
123
  - ".rspec"
122
124
  - ".rubocop.yml"
123
- - ".ruby-gemset"
124
125
  - ".ruby-version"
125
- - ".travis.yml"
126
+ - ".tool-versions"
126
127
  - Gemfile
127
128
  - Gemfile.lock
128
129
  - LICENSE.txt
@@ -133,11 +134,12 @@ files:
133
134
  - lib/flavicon.rb
134
135
  - lib/flavicon/finder.rb
135
136
  - lib/flavicon/version.rb
136
- homepage: http://github.com/hasghari/flavicon
137
+ homepage: https://github.com/hasghari/flavicon
137
138
  licenses:
138
139
  - MIT
139
- metadata: {}
140
- post_install_message:
140
+ metadata:
141
+ rubygems_mfa_required: 'true'
142
+ post_install_message:
141
143
  rdoc_options: []
142
144
  require_paths:
143
145
  - lib
@@ -145,15 +147,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
147
  requirements:
146
148
  - - ">="
147
149
  - !ruby/object:Gem::Version
148
- version: '0'
150
+ version: '2.7'
149
151
  required_rubygems_version: !ruby/object:Gem::Requirement
150
152
  requirements:
151
153
  - - ">="
152
154
  - !ruby/object:Gem::Version
153
155
  version: '0'
154
156
  requirements: []
155
- rubygems_version: 3.0.3
156
- signing_key:
157
+ rubygems_version: 3.3.3
158
+ signing_key:
157
159
  specification_version: 4
158
160
  summary: fetch favicon url for provided url
159
161
  test_files: []
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- flavicon
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- ---
2
- sudo: false
3
- env:
4
- global:
5
- - CC_TEST_REPORTER_ID=e365747cb5bcc556a4ce69b2deca895b8cc1a39601d63db9e3e82c83c9c9b39e
6
- language: ruby
7
- rvm:
8
- - 2.3
9
- - 2.4
10
- - 2.5
11
- - 2.6
12
- cache: bundler
13
- before_install: gem install bundler -v 2.0.1
14
- before_script:
15
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
16
- - chmod +x ./cc-test-reporter
17
- - ./cc-test-reporter before-build
18
- script:
19
- - bundle exec rspec
20
- after_script:
21
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT