kudzu 1.3.0 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kudzu/adapter/memory/frontier.rb +2 -0
  3. data/lib/kudzu/adapter/memory/model/link.rb +2 -0
  4. data/lib/kudzu/adapter/memory/model/page.rb +2 -0
  5. data/lib/kudzu/adapter/memory/repository.rb +2 -0
  6. data/lib/kudzu/adapter/memory.rb +2 -0
  7. data/lib/kudzu/agent/all.rb +2 -0
  8. data/lib/kudzu/agent/fetcher.rb +2 -0
  9. data/lib/kudzu/agent/http/connection.rb +2 -0
  10. data/lib/kudzu/agent/http/connection_pool.rb +2 -0
  11. data/lib/kudzu/agent/page_filterer.rb +2 -0
  12. data/lib/kudzu/agent/reference.rb +2 -0
  13. data/lib/kudzu/agent/response.rb +2 -0
  14. data/lib/kudzu/agent/robots/parser.rb +2 -0
  15. data/lib/kudzu/agent/robots/txt.rb +2 -0
  16. data/lib/kudzu/agent/robots.rb +2 -0
  17. data/lib/kudzu/agent/sleeper.rb +2 -0
  18. data/lib/kudzu/agent/url_extractor.rb +2 -0
  19. data/lib/kudzu/agent/url_filterer.rb +2 -0
  20. data/lib/kudzu/agent/util/charset_detector.rb +2 -0
  21. data/lib/kudzu/agent/util/content_type_parser.rb +2 -0
  22. data/lib/kudzu/agent/util/matcher.rb +2 -0
  23. data/lib/kudzu/agent/util/mime_type_detector.rb +2 -0
  24. data/lib/kudzu/agent/util/title_parser.rb +2 -0
  25. data/lib/kudzu/agent.rb +11 -1
  26. data/lib/kudzu/callback.rb +2 -0
  27. data/lib/kudzu/common.rb +2 -0
  28. data/lib/kudzu/config/filter.rb +2 -0
  29. data/lib/kudzu/config.rb +2 -0
  30. data/lib/kudzu/crawler.rb +2 -0
  31. data/lib/kudzu/model/all.rb +2 -0
  32. data/lib/kudzu/model/base.rb +2 -0
  33. data/lib/kudzu/model/link.rb +2 -0
  34. data/lib/kudzu/model/page.rb +2 -0
  35. data/lib/kudzu/thread_pool.rb +2 -0
  36. data/lib/kudzu/version.rb +3 -1
  37. data/lib/kudzu.rb +2 -0
  38. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16db7469597ff96bff30c59c9b6da73e8c4d33b535228424675c7e7a539e4ec2
4
- data.tar.gz: ee0eb79b8e5c3e4e3d3832ed1f8e9d0dc291c60f3d626495eb21055e5e23341e
3
+ metadata.gz: a481432d23d78a3eb20587d82f440dc0e3e7375ad605ac8b7afc9f65250ba19f
4
+ data.tar.gz: e45cf1a70ca8f151b3e9b1298d33e07e5101a939aedea5aa959dfce3309bdcba
5
5
  SHA512:
6
- metadata.gz: 6d3a060a674cbd7ec9de94db1d94dcb9c0e6eac1f0b6bb20a798547b8eb3f29a69c0d404ca45dd7efc7f11d91de2618ac214f0d316cbe58fd69276878e37a9bf
7
- data.tar.gz: b423624bc1e7ea849a98cbea9d34b8a1dcfd22f5fd7bee8ce0791e900ac805d2d448776d0a4b7cb1e0be9a9ef033f008700cf16aed62ffa287bccacbb1db0db4
6
+ metadata.gz: 4e31a988ca6f30ba60d4832c65376b62f3e285d3204da35ded55d52a4bbf64c9cef8a89b59e2653832f9369af7b57842d30fbf03d8f0003e2efdb0be3ac46b1e
7
+ data.tar.gz: a950a0462839e0b8b115f3b46fd267b55d56001c151cc4893f2c00d17910ee5a5c4cc109d70023d95bbabd89df354e0cd6167010c5b60491121a9386316aa09e
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Adapter
3
5
  module Memory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Adapter
3
5
  module Memory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Adapter
3
5
  module Memory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Adapter
3
5
  module Memory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dir[File.join(__dir__, 'memory/**/*.rb')].each do |file|
2
4
  require_relative file
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dir[File.join(__dir__, '**/*.rb')].each do |file|
2
4
  require_relative file
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Fetcher
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Http
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Http
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class PageFilterer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Reference < Kudzu::Model::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Response < Kudzu::Model::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Robots
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Robots
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Robots
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Sleeper
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class UrlExtractor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class UrlFilterer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Util
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Util
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Util
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Util
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Agent
3
5
  class Util
data/lib/kudzu/agent.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'agent/all'
2
4
 
3
5
  module Kudzu
@@ -30,13 +32,21 @@ module Kudzu
30
32
  end
31
33
 
32
34
  def extract_refs(response)
35
+ return [] unless redirect_url_allowed?(response)
33
36
  refs = @url_extractor.extract(response)
34
37
  @url_filterer.filter(refs, response.url)
35
38
  end
36
39
 
37
40
  def filter_response?(response)
38
- return false if response.redirect_from && !@url_filterer.allowed?(response.url, response.redirect_from)
41
+ return true unless redirect_url_allowed?(response)
39
42
  !@page_filterer.allowed?(response)
40
43
  end
44
+
45
+ private
46
+
47
+ def redirect_url_allowed?(response)
48
+ return true if response.redirect_from.nil? || response.redirect_from.empty?
49
+ @url_filterer.allowed?(response.url, response.redirect_from)
50
+ end
41
51
  end
42
52
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Callback
3
5
  CALLBACKS = [:on_success, # 2xx
data/lib/kudzu/common.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Common
3
5
  class << self
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class Config
3
5
  class Filter
data/lib/kudzu/config.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ostruct'
2
4
  require_relative 'config/filter'
3
5
 
data/lib/kudzu/crawler.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'model/all'
2
4
  require_relative 'adapter/memory'
3
5
  require_relative 'agent'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Dir[File.join(__dir__, '*.rb')].each do |file|
2
4
  require_relative file
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Model
3
5
  class Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Model
3
5
  module Link
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  module Model
3
5
  module Page
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
4
  class ThreadPool
3
5
  def initialize(size)
data/lib/kudzu/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kudzu
2
- VERSION = '1.3.0'
4
+ VERSION = '1.3.2'
3
5
  end
data/lib/kudzu.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
  require 'http-cookie'
3
5
  require 'addressable'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kudzu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshikazu Kaneta
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-17 00:00:00.000000000 Z
11
+ date: 2024-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -213,7 +213,7 @@ homepage: https://github.com/kanety/kudzu
213
213
  licenses:
214
214
  - MIT
215
215
  metadata: {}
216
- post_install_message:
216
+ post_install_message:
217
217
  rdoc_options: []
218
218
  require_paths:
219
219
  - lib
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  version: '0'
230
230
  requirements: []
231
231
  rubygems_version: 3.3.3
232
- signing_key:
232
+ signing_key:
233
233
  specification_version: 4
234
234
  summary: A simple web crawler for ruby
235
235
  test_files: []