gengiscan 0.30.0 → 0.40.0

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.
@@ -14,14 +14,17 @@ module Gengiscan
14
14
 
15
15
  def detect(url)
16
16
  uri = URI(url)
17
- res = Net::HTTP.get_response(uri)
18
-
19
- {:code=>res.code, :server=>res['Server'], :powered=>res['X-Powered-By'], :generator=>get_generator_signature(res)}
17
+ begin
18
+ res = Net::HTTP.get_response(uri)
19
+ {:status=>:OK, :code=>res.code, :server=>res['Server'], :powered=>res['X-Powered-By'], :generator=>get_generator_signature(res)}
20
+ rescue
21
+ {:status=>:KO, :code=>nil, :server=>nil, :powered=>nil, :generator=>nil}
22
+ end
20
23
  end
21
24
 
22
25
  private
23
- def get_generator_signature(res)
24
26
 
27
+ def get_generator_signature(res)
25
28
  generator = ""
26
29
  doc=Nokogiri::HTML(res.body)
27
30
  doc.xpath("//meta[@name='generator']/@content").each do |value|
@@ -1,3 +1,3 @@
1
1
  module Gengiscan
2
- VERSION = "0.30.0"
2
+ VERSION = "0.40.0"
3
3
  end
@@ -4,13 +4,48 @@ include WebMock::API
4
4
  describe 'gengiscan' do
5
5
  let(:g) {Gengiscan::Engine.new}
6
6
 
7
- it 'is great' do
7
+ describe 'when the server is up and running' do
8
+ it 'returns a status saying OK' do
9
+ stub_request(:get, "http://www.test.com/index.html").
10
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
11
+ to_return(:status=>200, :body=>"<!DOCTYPE html><html><head><meta name=\"generator\" content=\"WordPress 2.3\" /></head><body>A test cms powered</body></html>", :headers=>{})
12
+ hash = g.detect('http://www.test.com/index.html')
13
+ hash[:status].should == :OK
14
+
15
+
16
+ end
17
+
18
+ it 'detect generator meta tag' do
8
19
  stub_request(:get, "http://www.test.com/index.html").
9
20
  with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
10
21
  to_return(:status=>200, :body=>"<!DOCTYPE html><html><head><meta name=\"generator\" content=\"WordPress 2.3\" /></head><body>A test cms powered</body></html>", :headers=>{})
11
22
 
12
23
  hash = g.detect('http://www.test.com/index.html')
13
24
  hash[:generator].should == "WordPress 2.3"
25
+ end
14
26
 
27
+ it 'detect server header' do
28
+ stub_request(:get, "http://www.test.com/index.html").
29
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
30
+ to_return(:status=>200, :body=>"<!DOCTYPE html><html><head><meta name=\"generator\" content=\"WordPress 2.3\" /></head><body>A test cms powered</body></html>", :headers=>{'Server' => 'Apache'})
31
+ hash = g.detect('http://www.test.com/index.html')
32
+ hash[:server].should == "Apache"
33
+ end
34
+
35
+
36
+ it 'detect x-powered-by header' do
37
+ stub_request(:get, "http://www.test.com/index.html").
38
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
39
+ to_return(:status=>200, :body=>"<!DOCTYPE html><html><head><meta name=\"generator\" content=\"WordPress 2.3\" /></head><body>A test cms powered</body></html>", :headers=>{'X-Powered-By' => 'Linux'})
40
+ hash = g.detect('http://www.test.com/index.html')
41
+ hash[:powered].should == "Linux"
42
+ end
43
+
44
+ end
45
+ describe 'when the server does not exist' do
46
+ it 'returns a status saying KO' do
47
+ hash = g.detect('http://i-dont-exist.it')
48
+ hash[:status].should == :KO
49
+ end
15
50
  end
16
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gengiscan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 0.40.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-14 00:00:00.000000000 Z
12
+ date: 2012-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -111,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
111
  version: '0'
112
112
  segments:
113
113
  - 0
114
- hash: 537912182549352961
114
+ hash: -667058402699579580
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  segments:
122
122
  - 0
123
- hash: 537912182549352961
123
+ hash: -667058402699579580
124
124
  requirements: []
125
125
  rubyforge_project:
126
126
  rubygems_version: 1.8.24