weneedfeed 0.9.1 → 0.11.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: 7aeb8844141a877a1c8e17c1aa1549d030a9384d1fbc01219a75a45891823830
4
- data.tar.gz: e707d7fdec8299c0b5cf76c0628ab58a5e8b1c1aec443fe2cc00524671df68b5
3
+ metadata.gz: 9d4bfc07ec09b3fc76791f599dd17fb684011a1578022d3959a9d75ba2dee16f
4
+ data.tar.gz: 9108f2c16e46464d0901d9c7856fb8b75bdead5fff144b4167ec816e8124aa6a
5
5
  SHA512:
6
- metadata.gz: a3db194daf276a2abff61e6c7a92cc137404b6bfb640df7db77a770316e4f10f6cc57b72172bcdda94eceb1b4db726bfc0547719452d097dd33d320394e7f6ea
7
- data.tar.gz: 14cfe2f49aa515f396d4ae598bb07eaeab91cec57d1f5201e68d04770bb6d762b86e346700030a0f7fdd2b9fd57b81e64ff3982c03bdbb34b02e73f34a83f03f
6
+ metadata.gz: 56781eb12af36d6fe86c62ea13055b42acb422835d000efaa244d212e4a10f649e9395ea21a83ecbac29246c82ecf41f8396cf0f354379ba774abf514a692a8d
7
+ data.tar.gz: c41a3cad5280ef1f3a8072b743bb90cc1c1e35f643392c8216ad6c95c551b9ec9bde21eb37cfeab62ebec11eef6cc7beb5fc75a752c25a5f9b68b6f26c85d65e
@@ -8,13 +8,19 @@ on:
8
8
 
9
9
  jobs:
10
10
  rspec:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ ruby:
15
+ - 2.7.2
16
+ - 3.0.2
11
17
  runs-on: ubuntu-20.04
12
18
  steps:
13
19
  - uses: actions/checkout@v2
14
20
  - uses: ruby/setup-ruby@v1
15
21
  with:
16
22
  bundler-cache: true
17
- ruby-version: 2.7.2
23
+ ruby-version: ${{ matrix.ruby }}
18
24
  - run: bundle exec rspec --force-color
19
25
  rubocop:
20
26
  runs-on: ubuntu-20.04
data/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.11.0 - 2022-04-13
11
+
12
+ ### Changed
13
+
14
+ - Support invalid link URL and image URL.
15
+
16
+ ## 0.10.0 - 2022-04-13
17
+
18
+ ### Changed
19
+
20
+ - Replace mimemagic with marcel.
21
+
22
+ ### Fixed
23
+
24
+ - Fix error on activesupport 7.
25
+
26
+ ## 0.9.2 - 2020-12-03
27
+
28
+ ### Fixed
29
+
30
+ - Fix item image URL on JSON source.
31
+ - Fix item image MIME type detection.
32
+
10
33
  ## 0.9.1 - 2020-12-03
11
34
 
12
35
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weneedfeed (0.9.1)
4
+ weneedfeed (0.11.0)
5
5
  activesupport
6
6
  builder
7
7
  faraday
8
8
  faraday_middleware
9
9
  hibana (>= 0.2)
10
- mimemagic
10
+ marcel
11
11
  nokogiri
12
12
  rack-capture (>= 0.4.0)
13
13
  thor
@@ -15,25 +15,45 @@ PATH
15
15
  GEM
16
16
  remote: https://rubygems.org/
17
17
  specs:
18
- activesupport (6.0.3.4)
18
+ activesupport (7.0.2.3)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
- i18n (>= 0.7, < 2)
21
- minitest (~> 5.1)
22
- tzinfo (~> 1.1)
23
- zeitwerk (~> 2.2, >= 2.2.2)
24
- addressable (2.7.0)
20
+ i18n (>= 1.6, < 2)
21
+ minitest (>= 5.1)
22
+ tzinfo (~> 2.0)
23
+ addressable (2.8.0)
25
24
  public_suffix (>= 2.0.2, < 5.0)
26
- ast (2.4.1)
25
+ ast (2.4.2)
27
26
  builder (3.2.4)
28
- concurrent-ruby (1.1.7)
29
- crack (0.4.4)
30
- diff-lcs (1.4.4)
31
- faraday (1.1.0)
27
+ concurrent-ruby (1.1.10)
28
+ crack (0.4.5)
29
+ rexml
30
+ diff-lcs (1.5.0)
31
+ faraday (1.10.0)
32
+ faraday-em_http (~> 1.0)
33
+ faraday-em_synchrony (~> 1.0)
34
+ faraday-excon (~> 1.1)
35
+ faraday-httpclient (~> 1.0)
36
+ faraday-multipart (~> 1.0)
37
+ faraday-net_http (~> 1.0)
38
+ faraday-net_http_persistent (~> 1.0)
39
+ faraday-patron (~> 1.0)
40
+ faraday-rack (~> 1.0)
41
+ faraday-retry (~> 1.0)
42
+ ruby2_keywords (>= 0.0.4)
43
+ faraday-em_http (1.0.0)
44
+ faraday-em_synchrony (1.0.0)
45
+ faraday-excon (1.1.0)
46
+ faraday-httpclient (1.0.1)
47
+ faraday-multipart (1.0.3)
32
48
  multipart-post (>= 1.2, < 3)
33
- ruby2_keywords
34
- faraday_middleware (1.0.0)
49
+ faraday-net_http (1.0.1)
50
+ faraday-net_http_persistent (1.2.0)
51
+ faraday-patron (1.0.0)
52
+ faraday-rack (1.0.0)
53
+ faraday-retry (1.0.3)
54
+ faraday_middleware (1.2.0)
35
55
  faraday (~> 1.0)
36
- hanami-router (2.0.0.alpha3)
56
+ hanami-router (2.0.0.alpha5)
37
57
  mustermann (~> 1.0)
38
58
  mustermann-contrib (~> 1.0)
39
59
  rack (~> 2.0)
@@ -43,72 +63,71 @@ GEM
43
63
  hanami-router (>= 2.0.0.alpha3)
44
64
  rack
45
65
  tilt
46
- i18n (1.8.5)
66
+ i18n (1.10.0)
47
67
  concurrent-ruby (~> 1.0)
48
- mimemagic (0.3.5)
49
- mini_portile2 (2.4.0)
50
- minitest (5.14.2)
68
+ marcel (1.0.2)
69
+ mini_portile2 (2.8.0)
70
+ minitest (5.15.0)
51
71
  multipart-post (2.1.1)
52
72
  mustermann (1.1.1)
53
73
  ruby2_keywords (~> 0.0.1)
54
74
  mustermann-contrib (1.1.1)
55
75
  hansi (~> 0.2.0)
56
76
  mustermann (= 1.1.1)
57
- nokogiri (1.10.10)
58
- mini_portile2 (~> 2.4.0)
59
- parallel (1.20.1)
60
- parser (2.7.2.0)
77
+ nokogiri (1.13.4)
78
+ mini_portile2 (~> 2.8.0)
79
+ racc (~> 1.4)
80
+ parallel (1.22.1)
81
+ parser (3.1.2.0)
61
82
  ast (~> 2.4.1)
62
- public_suffix (4.0.6)
83
+ public_suffix (4.0.7)
84
+ racc (1.6.0)
63
85
  rack (2.2.3)
64
86
  rack-capture (0.4.0)
65
87
  rack
66
88
  rack-test (1.1.0)
67
89
  rack (>= 1.0, < 3)
68
- rainbow (3.0.0)
90
+ rainbow (3.1.1)
69
91
  rake (12.3.3)
70
- regexp_parser (1.8.2)
71
- rexml (3.2.4)
72
- rspec (3.9.0)
73
- rspec-core (~> 3.9.0)
74
- rspec-expectations (~> 3.9.0)
75
- rspec-mocks (~> 3.9.0)
76
- rspec-core (3.9.3)
77
- rspec-support (~> 3.9.3)
78
- rspec-expectations (3.9.3)
92
+ regexp_parser (2.3.0)
93
+ rexml (3.2.5)
94
+ rspec (3.11.0)
95
+ rspec-core (~> 3.11.0)
96
+ rspec-expectations (~> 3.11.0)
97
+ rspec-mocks (~> 3.11.0)
98
+ rspec-core (3.11.0)
99
+ rspec-support (~> 3.11.0)
100
+ rspec-expectations (3.11.0)
79
101
  diff-lcs (>= 1.2.0, < 2.0)
80
- rspec-support (~> 3.9.0)
81
- rspec-mocks (3.9.1)
102
+ rspec-support (~> 3.11.0)
103
+ rspec-mocks (3.11.1)
82
104
  diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.9.0)
84
- rspec-support (3.9.4)
85
- rubocop (1.4.0)
105
+ rspec-support (~> 3.11.0)
106
+ rspec-support (3.11.0)
107
+ rubocop (1.27.0)
86
108
  parallel (~> 1.10)
87
- parser (>= 2.7.1.5)
109
+ parser (>= 3.1.0.0)
88
110
  rainbow (>= 2.2.2, < 4.0)
89
- regexp_parser (>= 1.8)
111
+ regexp_parser (>= 1.8, < 3.0)
90
112
  rexml
91
- rubocop-ast (>= 1.1.1)
113
+ rubocop-ast (>= 1.16.0, < 2.0)
92
114
  ruby-progressbar (~> 1.7)
93
- unicode-display_width (>= 1.4.0, < 2.0)
94
- rubocop-ast (1.1.1)
95
- parser (>= 2.7.1.5)
96
- rubocop-rspec (2.0.0)
97
- rubocop (~> 1.0)
98
- rubocop-ast (>= 1.1.0)
99
- ruby-progressbar (1.10.1)
100
- ruby2_keywords (0.0.2)
101
- thor (1.0.1)
102
- thread_safe (0.3.6)
115
+ unicode-display_width (>= 1.4.0, < 3.0)
116
+ rubocop-ast (1.17.0)
117
+ parser (>= 3.1.1.0)
118
+ rubocop-rspec (2.9.0)
119
+ rubocop (~> 1.19)
120
+ ruby-progressbar (1.11.0)
121
+ ruby2_keywords (0.0.5)
122
+ thor (1.2.1)
103
123
  tilt (2.0.10)
104
- tzinfo (1.2.8)
105
- thread_safe (~> 0.1)
106
- unicode-display_width (1.7.0)
107
- webmock (3.9.3)
108
- addressable (>= 2.3.6)
124
+ tzinfo (2.0.4)
125
+ concurrent-ruby (~> 1.0)
126
+ unicode-display_width (2.1.0)
127
+ webmock (3.14.0)
128
+ addressable (>= 2.8.0)
109
129
  crack (>= 0.3.2)
110
130
  hashdiff (>= 0.4.0, < 2.0.0)
111
- zeitwerk (2.4.2)
112
131
 
113
132
  PLATFORMS
114
133
  ruby
@@ -123,4 +142,4 @@ DEPENDENCIES
123
142
  weneedfeed!
124
143
 
125
144
  BUNDLED WITH
126
- 2.1.4
145
+ 2.2.29
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # For faraday_middleware/response_middleware.
4
+ # https://github.com/r7kamura/weneedfeed/issues/19
5
+ require 'active_support'
6
+ require 'active_support/isolated_execution_state' if ActiveSupport.gem_version >= Gem::Version.new('7')
7
+
3
8
  require 'active_support/core_ext/array/conversions'
4
9
  require 'active_support/core_ext/hash/conversions'
5
10
  require 'faraday'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mimemagic'
3
+ require 'marcel'
4
+ require 'uri'
4
5
 
5
6
  module Weneedfeed
6
7
  class Item
@@ -53,14 +54,21 @@ module Weneedfeed
53
54
  def image_mime_type
54
55
  return unless image_url
55
56
 
56
- ::MimeMagic.by_path(image_url)&.type
57
+ ::Marcel::Magic.by_path(image_url)&.type
57
58
  end
58
59
 
59
60
  # @return [String, nil]
60
61
  def image_path_or_url
61
62
  return unless @image_selector
62
63
 
63
- @node.at(@image_selector)&.[]('src')
64
+ node = @node.at(@image_selector)
65
+ return unless node
66
+
67
+ if node.name == 'img'
68
+ node['src']
69
+ else
70
+ node.content
71
+ end
64
72
  end
65
73
 
66
74
  def image_url
@@ -70,14 +78,20 @@ module Weneedfeed
70
78
  @url,
71
79
  image_path_or_url
72
80
  ).to_s
81
+ rescue ::URI::InvalidURIError
82
+ "#{@url}#{image_path_or_url}"
73
83
  end
74
84
 
75
85
  # @return [String]
76
86
  def link
87
+ return unless link_path_or_url
88
+
77
89
  ::URI.join(
78
90
  @url,
79
91
  link_path_or_url
80
92
  ).to_s
93
+ rescue ::URI::InvalidURIError
94
+ "#{@url}#{link_path_or_url}"
81
95
  end
82
96
 
83
97
  # @return [Nokogiri::Node, nil]
@@ -88,6 +102,8 @@ module Weneedfeed
88
102
  # @return [String, nil]
89
103
  def link_path_or_url
90
104
  node = link_node
105
+ return unless node
106
+
91
107
  node['href'] || node.inner_text
92
108
  end
93
109
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Weneedfeed
4
- VERSION = '0.9.1'
4
+ VERSION = '0.11.0'
5
5
  end
data/weneedfeed.gemspec CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |spec|
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = spec.homepage
18
18
 
19
+ spec.metadata['rubygems_mfa_required'] = 'true'
20
+
19
21
  # Specify which files should be added to the gem when it is released.
20
22
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
23
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
@@ -30,7 +32,7 @@ Gem::Specification.new do |spec|
30
32
  spec.add_runtime_dependency 'faraday'
31
33
  spec.add_runtime_dependency 'faraday_middleware'
32
34
  spec.add_runtime_dependency 'hibana', '>= 0.2'
33
- spec.add_runtime_dependency 'mimemagic'
35
+ spec.add_runtime_dependency 'marcel'
34
36
  spec.add_runtime_dependency 'nokogiri'
35
37
  spec.add_runtime_dependency 'rack-capture', '>= 0.4.0'
36
38
  spec.add_runtime_dependency 'thor'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weneedfeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-02 00:00:00.000000000 Z
11
+ date: 2022-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.2'
83
83
  - !ruby/object:Gem::Dependency
84
- name: mimemagic
84
+ name: marcel
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -186,6 +186,7 @@ licenses:
186
186
  metadata:
187
187
  homepage_uri: https://github.com/r7kamura/weneedfeed
188
188
  source_code_uri: https://github.com/r7kamura/weneedfeed
189
+ rubygems_mfa_required: 'true'
189
190
  post_install_message:
190
191
  rdoc_options: []
191
192
  require_paths:
@@ -201,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
202
  - !ruby/object:Gem::Version
202
203
  version: '0'
203
204
  requirements: []
204
- rubygems_version: 3.1.2
205
+ rubygems_version: 3.1.4
205
206
  signing_key:
206
207
  specification_version: 4
207
208
  summary: Generate feeds from URL and selectors.