ronin-web-spider 0.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,115 @@
1
+ #
2
+ # ronin-web-spider - A collection of common web spidering routines.
3
+ #
4
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ #
6
+ # ronin-web-spider is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Lesser General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # ronin-web-spider is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Lesser General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License
17
+ # along with ronin-web-spider. If not, see <https://www.gnu.org/licenses/>.
18
+ #
19
+
20
+ require 'ronin/web/spider/agent'
21
+ require 'ronin/web/spider/version'
22
+
23
+ module Ronin
24
+ module Web
25
+ module Spider
26
+ #
27
+ # Creates a new agent and begin spidering at the given URL.
28
+ #
29
+ # @param [URI::HTTP, String] url
30
+ # The URL to start spidering at.
31
+ #
32
+ # @param [Hash{Symbol => Object}] kwargs
33
+ # Additional keyword arguments. See {Agent#initialize}.
34
+ #
35
+ # @yield [agent]
36
+ # If a block is given, it will be passed the newly created agent
37
+ # before it begins spidering.
38
+ #
39
+ # @yieldparam [Agent] agent
40
+ # The newly created agent.
41
+ #
42
+ # @see https://rubydoc.info/gems/spidr/Spidr/Agent#start_at-class_method
43
+ #
44
+ def self.start_at(url,**kwargs,&block)
45
+ Agent.start_at(url,**kwargs,&block)
46
+ end
47
+
48
+ #
49
+ # Creates a new agent and spiders the given host.
50
+ #
51
+ # @param [String] name
52
+ # The host-name to spider.
53
+ #
54
+ # @param [Hash{Symbol => Object}] kwargs
55
+ # Additional keyword arguments. See {Agent#initialize}.
56
+ #
57
+ # @yield [agent]
58
+ # If a block is given, it will be passed the newly created agent
59
+ # before it begins spidering.
60
+ #
61
+ # @yieldparam [Agent] agent
62
+ # The newly created agent.
63
+ #
64
+ # @see https://rubydoc.info/gems/spidr/Spidr/Agent#host-class_method
65
+ #
66
+ def self.host(name,**kwargs,&block)
67
+ Agent.host(name,**kwargs,&block)
68
+ end
69
+
70
+ #
71
+ # Creates a new agent and spiders the web-site located at the given URL.
72
+ #
73
+ # @param [URI::HTTP, String] url
74
+ # The web-site to spider.
75
+ #
76
+ # @param [Hash{Symbol => Object}] kwargs
77
+ # Additional keyword arguments. See {Agent#initialize}.
78
+ #
79
+ # @yield [agent]
80
+ # If a block is given, it will be passed the newly created agent
81
+ # before it begins spidering.
82
+ #
83
+ # @yieldparam [Agent] agent
84
+ # The newly created agent.
85
+ #
86
+ # @see https://rubydoc.info/gems/spidr/Spidr/Agent#site-class_method
87
+ #
88
+ def self.site(url,**kwargs,&block)
89
+ Agent.site(url,**kwargs,&block)
90
+ end
91
+
92
+ #
93
+ # Creates a new agent and spiders the entire domain.
94
+ #
95
+ # @param [String] name
96
+ # The top-level domain to spider.
97
+ #
98
+ # @param [Hash{Symbol => Object}] kwargs
99
+ # Additional keyword arguments. See {Agent#initialize}.
100
+ #
101
+ # @yield [agent]
102
+ # If a block is given, it will be passed the newly created agent
103
+ # before it begins spidering.
104
+ #
105
+ # @yieldparam [Agent] agent
106
+ # The newly created agent.
107
+ #
108
+ # @see https://rubydoc.info/gems/spidr/Spidr/Agent#domain-class_method
109
+ #
110
+ def self.domain(name,**kwargs,&block)
111
+ Agent.domain(name,**kwargs,&block)
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+
3
+ require 'yaml'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gemspec = YAML.load_file('gemspec.yml')
7
+
8
+ gem.name = gemspec.fetch('name')
9
+ gem.version = gemspec.fetch('version') do
10
+ lib_dir = File.join(File.dirname(__FILE__),'lib')
11
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
12
+
13
+ require 'ronin/web/spider/version'
14
+ Ronin::Web::Spider::VERSION
15
+ end
16
+
17
+ gem.summary = gemspec['summary']
18
+ gem.description = gemspec['description']
19
+ gem.licenses = Array(gemspec['license'])
20
+ gem.authors = Array(gemspec['authors'])
21
+ gem.email = gemspec['email']
22
+ gem.homepage = gemspec['homepage']
23
+ gem.metadata = gemspec['metadata'] if gemspec['metadata']
24
+
25
+ glob = lambda { |patterns| gem.files & Dir[*patterns] }
26
+
27
+ gem.files = `git ls-files`.split($/)
28
+ gem.files = glob[gemspec['files']] if gemspec['files']
29
+ gem.files += Array(gemspec['generated_files'])
30
+
31
+ gem.executables = gemspec.fetch('executables') do
32
+ glob['bin/*'].map { |path| File.basename(path) }
33
+ end
34
+
35
+ gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
36
+ gem.test_files = glob[gemspec['test_files'] || 'spec/{**/}*_spec.rb']
37
+ gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
38
+
39
+ gem.require_paths = Array(gemspec.fetch('require_paths') {
40
+ %w[ext lib].select { |dir| File.directory?(dir) }
41
+ })
42
+
43
+ gem.requirements = gemspec['requirements']
44
+ gem.required_ruby_version = gemspec['required_ruby_version']
45
+ gem.required_rubygems_version = gemspec['required_rubygems_version']
46
+ gem.post_install_message = gemspec['post_install_message']
47
+
48
+ split = lambda { |string| string.split(/,\s*/) }
49
+
50
+ if gemspec['dependencies']
51
+ gemspec['dependencies'].each do |name,versions|
52
+ gem.add_dependency(name,split[versions])
53
+ end
54
+ end
55
+
56
+ if gemspec['development_dependencies']
57
+ gemspec['development_dependencies'].each do |name,versions|
58
+ gem.add_development_dependency(name,split[versions])
59
+ end
60
+ end
61
+ end