Skip to content

Commit 4ef304b

Browse files
committed
.
1 parent 6059bd8 commit 4ef304b

4 files changed

Lines changed: 60 additions & 53 deletions

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ group :development do
2626
gem 'rack-unreloader'
2727
gem 'rake', require: false
2828
gem 'rubocop', require: false
29+
gem 'rubocop-md', require: false
2930
gem 'rubocop-performance', require: false
3031
gem 'rubocop-rake', require: false
3132
gem 'rubocop-rspec', require: false

Gemfile.lock

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ GIT
2323

2424
GIT
2525
remote: https://github.com/html2rss/html2rss-configs
26-
revision: 65cf54c8b5c5516cfb78f812a4745771052fcf9a
26+
revision: d6d45eea7005decad6007b56f838d42141b6ec96
2727
specs:
2828
html2rss-configs (0.2.0)
2929
html2rss
@@ -88,8 +88,8 @@ GEM
8888
faraday (>= 1, < 3)
8989
faraday-net_http (3.4.1)
9090
net-http (>= 0.5.0)
91-
hashdiff (1.2.0)
92-
json (2.14.1)
91+
hashdiff (1.2.1)
92+
json (2.15.0)
9393
kramdown (2.5.1)
9494
rexml (>= 3.3.9)
9595
language_server-protocol (3.17.0.5)
@@ -98,7 +98,7 @@ GEM
9898
mime-types (3.7.0)
9999
logger
100100
mime-types-data (~> 3.2025, >= 3.2025.0507)
101-
mime-types-data (3.2025.0916)
101+
mime-types-data (3.2025.0924)
102102
net-http (0.6.0)
103103
uri
104104
nio4r (2.7.4)
@@ -119,19 +119,19 @@ GEM
119119
nokogiri (1.18.10-x86_64-linux-musl)
120120
racc (~> 1.4)
121121
parallel (1.27.0)
122-
parser (3.3.8.0)
122+
parser (3.3.9.0)
123123
ast (~> 2.4.1)
124124
racc
125-
prism (1.4.0)
125+
prism (1.5.1)
126126
public_suffix (6.0.2)
127-
puma (7.0.2)
127+
puma (7.0.4)
128128
nio4r (~> 2.0)
129129
puppeteer-ruby (0.45.6)
130130
concurrent-ruby (>= 1.1, < 1.4)
131131
mime-types (>= 3.0)
132132
websocket-driver (>= 0.6.0)
133133
racc (1.8.1)
134-
rack (3.2.0)
134+
rack (3.2.1)
135135
rack-attack (6.7.0)
136136
rack (>= 1.0, < 4)
137137
rack-cache (1.17.0)
@@ -141,57 +141,61 @@ GEM
141141
rack-timeout (0.7.0)
142142
rack-unreloader (2.1.0)
143143
rainbow (3.1.1)
144-
rake (13.2.1)
144+
rake (13.3.0)
145145
rbs (3.9.5)
146146
logger
147147
regexp_parser (2.11.3)
148148
reverse_markdown (3.0.0)
149149
nokogiri
150150
rexml (3.4.4)
151-
roda (3.95.0)
151+
roda (3.96.0)
152152
rack
153153
rspec (3.13.1)
154154
rspec-core (~> 3.13.0)
155155
rspec-expectations (~> 3.13.0)
156156
rspec-mocks (~> 3.13.0)
157-
rspec-core (3.13.4)
157+
rspec-core (3.13.5)
158158
rspec-support (~> 3.13.0)
159159
rspec-expectations (3.13.5)
160160
diff-lcs (>= 1.2.0, < 2.0)
161161
rspec-support (~> 3.13.0)
162162
rspec-mocks (3.13.5)
163163
diff-lcs (>= 1.2.0, < 2.0)
164164
rspec-support (~> 3.13.0)
165-
rspec-support (3.13.4)
165+
rspec-support (3.13.6)
166166
rss (0.3.1)
167167
rexml
168-
rubocop (1.75.8)
168+
rubocop (1.81.1)
169169
json (~> 2.3)
170170
language_server-protocol (~> 3.17.0.2)
171171
lint_roller (~> 1.1.0)
172172
parallel (~> 1.10)
173173
parser (>= 3.3.0.2)
174174
rainbow (>= 2.2.2, < 4.0)
175175
regexp_parser (>= 2.9.3, < 3.0)
176-
rubocop-ast (>= 1.44.0, < 2.0)
176+
rubocop-ast (>= 1.47.1, < 2.0)
177177
ruby-progressbar (~> 1.7)
178178
unicode-display_width (>= 2.4.0, < 4.0)
179-
rubocop-ast (1.44.1)
179+
rubocop-ast (1.47.1)
180180
parser (>= 3.3.7.2)
181181
prism (~> 1.4)
182-
rubocop-performance (1.25.0)
182+
rubocop-md (2.0.2)
183+
lint_roller (~> 1.1)
184+
rubocop (>= 1.72.1)
185+
rubocop-performance (1.26.0)
183186
lint_roller (~> 1.1)
184187
rubocop (>= 1.75.0, < 2.0)
185-
rubocop-ast (>= 1.38.0, < 2.0)
188+
rubocop-ast (>= 1.44.0, < 2.0)
186189
rubocop-rake (0.7.1)
187190
lint_roller (~> 1.1)
188191
rubocop (>= 1.72.1)
189-
rubocop-rspec (3.6.0)
192+
rubocop-rspec (3.7.0)
190193
lint_roller (~> 1.1)
191194
rubocop (~> 1.72, >= 1.72.1)
192-
rubocop-thread_safety (0.7.2)
195+
rubocop-thread_safety (0.7.3)
193196
lint_roller (~> 1.1)
194197
rubocop (~> 1.72, >= 1.72.1)
198+
rubocop-ast (>= 1.44.0, < 2.0)
195199
ruby-lsp (0.26.1)
196200
language_server-protocol (~> 3.17.0)
197201
prism (>= 1.2, < 2.0)
@@ -200,23 +204,23 @@ GEM
200204
sanitize (7.0.0)
201205
crass (~> 1.0.2)
202206
nokogiri (>= 1.16.8)
203-
sentry-ruby (5.24.0)
207+
sentry-ruby (5.28.0)
204208
bigdecimal
205209
concurrent-ruby (~> 1.0, >= 1.0.2)
206210
simplecov (0.22.0)
207211
docile (~> 1.1)
208212
simplecov-html (~> 0.11)
209213
simplecov_json_formatter (~> 0.1)
210-
simplecov-html (0.13.1)
214+
simplecov-html (0.13.2)
211215
simplecov_json_formatter (0.1.4)
212216
ssrf_filter (1.3.0)
213217
stackprof (0.2.27)
214218
thor (1.4.0)
215219
tzinfo (2.0.6)
216220
concurrent-ruby (~> 1.0)
217-
unicode-display_width (3.1.4)
218-
unicode-emoji (~> 4.0, >= 4.0.4)
219-
unicode-emoji (4.0.4)
221+
unicode-display_width (3.2.0)
222+
unicode-emoji (~> 4.1)
223+
unicode-emoji (4.1.0)
220224
uri (1.0.3)
221225
vcr (6.3.1)
222226
base64
@@ -257,6 +261,7 @@ DEPENDENCIES
257261
roda
258262
rspec
259263
rubocop
264+
rubocop-md
260265
rubocop-performance
261266
rubocop-rake
262267
rubocop-rspec
@@ -275,7 +280,7 @@ CHECKSUMS
275280
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
276281
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
277282
bigdecimal (3.2.3) sha256=ffd11d1ac67a0d3b2f44aec0a6487210b3f813f363dd11f1fcccf5ba00da4e1b
278-
byebug (12.0.0)
283+
byebug (12.0.0) sha256=d4a150d291cca40b66ec9ca31f754e93fed8aa266a17335f71bb0afa7fca1a1e
279284
climate_control (1.2.0) sha256=36b21896193fa8c8536fa1cd843a07cf8ddbd03aaba43665e26c53ec1bd70aa5
280285
concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6
281286
crack (1.0.0) sha256=c83aefdb428cdc7b66c7f287e488c796f055c0839e6e545fec2c7047743c4a49
@@ -293,16 +298,16 @@ CHECKSUMS
293298
faraday (2.13.4) sha256=c719ff52cfd0dbaeca79dd83ed3aeea3f621032abf8bc959d1c05666157cac26
294299
faraday-follow_redirects (0.3.0) sha256=d92d975635e2c7fe525dd494fcd4b9bb7f0a4a0ec0d5f4c15c729530fdb807f9
295300
faraday-net_http (3.4.1) sha256=095757fae7872b94eac839c08a1a4b8d84fd91d6886cfbe75caa2143de64ab3b
296-
hashdiff (1.2.0) sha256=c984f13e115bfc9953332e8e83bd9d769cfde9944e2d54e07eb9df7b76e140b5
301+
hashdiff (1.2.1) sha256=9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1
297302
html2rss (0.17.0)
298303
html2rss-configs (0.2.0)
299-
json (2.14.1) sha256=b08994d751e9f0697cc089243a3cfabf998da1d25e81e7dd0d0f84136ff74642
304+
json (2.15.0) sha256=bc24d490a1d81bcbf6b45ee5c02695545d4ed37f679cee879b789a2bbb53ad5c
300305
kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c
301306
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
302307
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
303308
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
304309
mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
305-
mime-types-data (3.2025.0916) sha256=0b0e783644ac4801c4f2c3efe6a985b337cf9954dcdba79f7d9314a05bec061c
310+
mime-types-data (3.2025.0924) sha256=f276bca15e59f35767cbcf2bc10e023e9200b30bd6a572c1daf7f4cc24994728
306311
net-http (0.6.0) sha256=9621b20c137898af9d890556848c93603716cab516dc2c89b01a38b894e259fb
307312
nio4r (2.7.4) sha256=d95dee68e0bb251b8ff90ac3423a511e3b784124e5db7ff5f4813a220ae73ca9
308313
nokogiri (1.18.10-aarch64-linux-gnu) sha256=7fb87235d729c74a2be635376d82b1d459230cc17c50300f8e4fcaabc6195344
@@ -314,50 +319,51 @@ CHECKSUMS
314319
nokogiri (1.18.10-x86_64-linux-gnu) sha256=ff5ba26ba2dbce5c04b9ea200777fd225061d7a3930548806f31db907e500f72
315320
nokogiri (1.18.10-x86_64-linux-musl) sha256=0651fccf8c2ebbc2475c8b1dfd7ccac3a0a6d09f8a41b72db8c21808cb483385
316321
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
317-
parser (3.3.8.0) sha256=2476364142b307fa5a1b1ece44f260728be23858a9c71078e956131a75453c45
318-
prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e
322+
parser (3.3.9.0) sha256=94d6929354b1a6e3e1f89d79d4d302cc8f5aa814431a6c9c7e0623335d7687f2
323+
prism (1.5.1) sha256=b40c1b76ccb9fcccc3d1553967cda6e79fa7274d8bfea0d98b15d27a6d187134
319324
public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394
320-
puma (7.0.2) sha256=cb419624b3dbd122852ca4d7ced87e40a51c2b08c6166b302c49ef5b3de20c82
325+
puma (7.0.4) sha256=b4c6ae11d1458052eeaa415176c3bf0000f4232287f413525ab2504446154b7a
321326
puppeteer-ruby (0.45.6) sha256=cb86f7b4f6f8658a709ae1a305e820bdb009548e6beff6675489926f9ceb5995
322327
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
323-
rack (3.2.0) sha256=79cd21514d696c59d61fae02e62900f087aac2d053fdc77d45f4e91b94fb3612
328+
rack (3.2.1) sha256=30af3f7e5ec21b0d14d822cf24446048dba5f651b617c7e97405b604f20a9e33
324329
rack-attack (6.7.0) sha256=3ca47e8f66cd33b2c96af53ea4754525cd928ed3fa8da10ee6dad0277791d77c
325330
rack-cache (1.17.0) sha256=49592f3ef2173b0f5524df98bb801fb411e839869e7ce84ac428dc492bf0eb90
326331
rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
327332
rack-timeout (0.7.0) sha256=757337e9793cca999bb73a61fe2a7d4280aa9eefbaf787ce3b98d860749c87d9
328333
rack-unreloader (2.1.0) sha256=18879cf2ced8ca21a01836bca706f65cce6ebe3f7d9d8a5157ce68ca62c7263a
329334
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
330-
rake (13.2.1) sha256=46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d
331-
rbs (3.9.5)
335+
rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493
336+
rbs (3.9.5) sha256=eabaaf60aee84e38cbf94839c6e1b9cd145c7295fc3cc0e88c92e4069b1119b0
332337
regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
333338
reverse_markdown (3.0.0) sha256=ab228386765a0259835873cd07054b62939c40f620c77c247eafaaa3b23faca4
334339
rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
335-
roda (3.95.0) sha256=61fbc5f00f234f1b92c3eae7f4195c1310e1c70cb61dcebfe559201b554140d8
340+
roda (3.96.0) sha256=e89397269a2713c3ce8e95156c7579309e514e808dc124b50657c7bdadff90df
336341
rspec (3.13.1) sha256=b9f9a58fa915b8d94a1d6b3195fe6dd28c4c34836a6097015142c4a9ace72140
337-
rspec-core (3.13.4) sha256=f9da156b7b775c82610a7b580624df51a55102f8c8e4a103b98f5d7a9fa23958
342+
rspec-core (3.13.5) sha256=ab3f682897c6131c67f9a17cfee5022a597f283aebe654d329a565f9937a4fa3
338343
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
339344
rspec-mocks (3.13.5) sha256=e4338a6f285ada9fe56f5893f5457783af8194f5d08884d17a87321d5195ea81
340-
rspec-support (3.13.4) sha256=184b1814f6a968102b57df631892c7f1990a91c9a3b9e80ef892a0fc2a71a3f7
345+
rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2
341346
rss (0.3.1) sha256=b46234c04551b925180f8bedfc6f6045bf2d9998417feda72f300e7980226737
342-
rubocop (1.75.8) sha256=c80ab4286c5dcfc49d7ad1787cdba5569b63b58c96ee7afde4ec47a9c8a85be9
343-
rubocop-ast (1.44.1) sha256=e3cc04203b2ef04f6d6cf5f85fe6d643f442b18cc3b23e3ada0ce5b6521b8e92
344-
rubocop-performance (1.25.0) sha256=6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1
347+
rubocop (1.81.1) sha256=352a9a6f314a4312f6c305f1f72bc466254d221c95445cd49e1b65d1f9411635
348+
rubocop-ast (1.47.1) sha256=592682017855408b046a8190689490763aecea175238232b1b526826349d01ae
349+
rubocop-md (2.0.2) sha256=98ca250d59dba381fe2c1ad71c60f5db7b6d8fa8a87cc274596beed75b1d85d6
350+
rubocop-performance (1.26.0) sha256=7bb0d9d9fb2ea122bf6f9a596dd7cf9dc93ab4950923d26c4ae4f328cef71ca9
345351
rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
346-
rubocop-rspec (3.6.0) sha256=c0e4205871776727e54dee9cc91af5fd74578001551ba40e1fe1a1ab4b404479
347-
rubocop-thread_safety (0.7.2) sha256=bd51449c420b1ddda5672b71a39706367402beb55aaf19fc020c1868717f31f6
348-
ruby-lsp (0.26.1)
352+
rubocop-rspec (3.7.0) sha256=b7b214da112034db9c6d00f2d811a354847e870f7b6ed2482b29649c3d42058f
353+
rubocop-thread_safety (0.7.3) sha256=067cdd52fbf5deffc18995437e45b5194236eaff4f71de3375a1f6052e48f431
354+
ruby-lsp (0.26.1) sha256=d140c75df25cd1a6475c17a84ce650aa81608e77ca0642d4ef4363f2c6791814
349355
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
350356
sanitize (7.0.0) sha256=269d1b9d7326e69307723af5643ec032ff86ad616e72a3b36d301ac75a273984
351-
sentry-ruby (5.24.0) sha256=420b15f4d81cf1cfddc4cb73d2282bcbaf111fe3554a6aa142f4cee2b870c437
357+
sentry-ruby (5.28.0) sha256=745c1db3b85c765993dfeb941830aeafff82d85330cd953410c7f37197b0bd99
352358
simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
353-
simplecov-html (0.13.1) sha256=5dab0b7ee612e60e9887ad57693832fdf4695b4c0c859eaea5f95c18791ef10b
359+
simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
354360
simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
355361
ssrf_filter (1.3.0) sha256=66882d7de7d09c019098d6d7372412950ae184ebbc7c51478002058307aba6f2
356362
stackprof (0.2.27) sha256=aff6d28656c852e74cf632cc2046f849033dc1dedffe7cb8c030d61b5745e80c
357363
thor (1.4.0) sha256=8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d
358364
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
359-
unicode-display_width (3.1.4) sha256=8caf2af1c0f2f07ec89ef9e18c7d88c2790e217c482bfc78aaa65eadd5415ac1
360-
unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a
365+
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
366+
unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5
361367
uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011
362368
vcr (6.3.1) sha256=37b56e157e720446a3f4d2d39919cabef8cb7b6c45936acffd2ef8229fec03ed
363369
webmock (3.25.1) sha256=ab9d5d9353bcbe6322c83e1c60a7103988efc7b67cd72ffb9012629c3d396323

app/feed_token.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def build_token_data
8181
{ p: { u: username, l: url, e: expires_at }, s: signature }
8282
end
8383

84-
def secure_compare(first, second)
84+
def secure_compare(first, second) # rubocop:disable Naming/PredicateMethod
8585
return false unless first && second && first.bytesize == second.bytesize
8686

8787
first.each_byte.zip(second.each_byte).reduce(0) { |acc, (a, b)| acc | (a ^ b) }.zero?

app/url_validator.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def url_allowed?(account, url)
2828
return true if allowed_urls.empty?
2929

3030
allowed_urls.any? do |pattern|
31-
wildcard?(pattern) ? match_wildcard(pattern, normalized_url) : match_exact(pattern, normalized_url)
31+
wildcard?(pattern) ? match_wildcard?(pattern, normalized_url) : match_exact?(pattern, normalized_url)
3232
end
3333
end
3434

@@ -39,7 +39,7 @@ def url_matches_patterns?(url, patterns)
3939
return false unless (normalized_url = normalize_url(url))
4040

4141
Array(patterns).any? do |pattern|
42-
wildcard?(pattern) ? match_wildcard(pattern, normalized_url) : match_exact(pattern, normalized_url)
42+
wildcard?(pattern) ? match_wildcard?(pattern, normalized_url) : match_exact?(pattern, normalized_url)
4343
end
4444
end
4545

@@ -49,19 +49,19 @@ def url_matches_patterns?(url, patterns)
4949
def url_matches_pattern?(url, pattern)
5050
return false unless (normalized_url = normalize_url(url))
5151

52-
wildcard?(pattern) ? match_wildcard(pattern, normalized_url) : match_exact(pattern, normalized_url)
52+
wildcard?(pattern) ? match_wildcard?(pattern, normalized_url) : match_exact?(pattern, normalized_url)
5353
end
5454

5555
private
5656

57-
def match_exact(pattern, normalized_url)
57+
def match_exact?(pattern, normalized_url)
5858
return true if pattern == normalized_url
5959

6060
normalized_pattern = normalize_url(pattern)
6161
normalized_pattern ? normalized_pattern == normalized_url : false
6262
end
6363

64-
def match_wildcard(pattern, normalized_url)
64+
def match_wildcard?(pattern, normalized_url)
6565
return true if pattern == '*'
6666

6767
File.fnmatch?(pattern, normalized_url, File::FNM_CASEFOLD)

0 commit comments

Comments
 (0)