ham 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,58 @@
1
+ module Ham
2
+ class Base
3
+
4
+ # Returns an empty array of default hosts
5
+ def hosts
6
+ []
7
+ end
8
+
9
+ # Returns a block that yields user defined-hosts
10
+ def each_host(&blk)
11
+ Ham::Hosts.parse(hosts, &blk)
12
+ end
13
+
14
+ # Returns an empty hash of default headers
15
+ def headers
16
+ {}
17
+ end
18
+
19
+ # Returns an empty hash of default parameters
20
+ def params
21
+ {}
22
+ end
23
+
24
+ # Raises a NotImplementedError. You should inherit this class and implement
25
+ # your own #scan method.
26
+ def scan
27
+ raise NotImplementedError, 'Please override #scan with your own method'
28
+ end
29
+
30
+ # Make a HTTP POST request to your host.
31
+ #
32
+ # Returns a HTTParty object
33
+ def post(uri, options = {})
34
+ HTTParty.post(uri, options.merge(headers: headers, body: params))
35
+ end
36
+
37
+ # Make a HTTP GET request to your host.
38
+ #
39
+ # Returns a HTTParty object
40
+ def get(uri, options = {})
41
+ HTTParty.get(uri, options.merge(headers: headers, body: params))
42
+ end
43
+
44
+ # Iterates over each host, applying the re-defined +scan+ method to it.
45
+ #
46
+ # Returns nil
47
+ def self.scan!
48
+ scanner = new
49
+ threads = []
50
+ scanner.each_host do |host|
51
+ threads << Thread.new(host) do |host|
52
+ scanner.send(:scan, host)
53
+ end
54
+ end
55
+ threads.join
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,27 @@
1
+ module Ham
2
+ class Hosts
3
+ def initialize(hosts)
4
+ @hosts = hosts
5
+ if hosts.is_a?(String)
6
+ if hosts.include? '/'
7
+ @klass = Ham::Hosts::Network
8
+ else
9
+ @klass = Ham::Hosts::Single
10
+ end
11
+ elsif hosts.is_a?(Array)
12
+ @klass = Ham::Hosts::Multiple
13
+ else
14
+ raise ArgumentError, "Invalid host format: #{hosts.inspect}"
15
+ end
16
+ end
17
+
18
+ def each_host(&blk)
19
+ klass = @klass.new(@hosts)
20
+ klass.each_host(&blk)
21
+ end
22
+
23
+ def self.parse(hosts, &blk)
24
+ new(hosts).each_host(&blk)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,6 @@
1
+ module Ham
2
+ # Returns the version of the currently loaded Ham as a Gem::Version
3
+ def self.version
4
+ Gem::Version.new '0.0.1'
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ham
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - James Rose
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: minitest
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Ham ham ham ham!
63
+ email: james@jbpr.net
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - lib/ham/base.rb
69
+ - lib/ham/hosts.rb
70
+ - lib/ham/version.rb
71
+ homepage:
72
+ licenses: []
73
+ post_install_message: Thanks for scanning with Ham :)
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.24
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: Ham
95
+ test_files: []