feedvalidator 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bde10f8cafaa7c9178d757b85928686685531244
4
- data.tar.gz: 31a0ef70f2f842b951a143c80a7ea3abe90b499d
3
+ metadata.gz: edd11b2f4b25f9248aed8ec078e86c957d7c9004
4
+ data.tar.gz: 8c8c4e13138b80d1646ee6939065939dd52e7a08
5
5
  SHA512:
6
- metadata.gz: ac20e1b26b07723a310c942f8fbfa9da465e5b54cd002ed9f574b1d792ae479cf8885a170ae547e760f36e9e6c92d949db4b677a8880e2b352761713a10f7ab8
7
- data.tar.gz: f971a4c67e56acca285532fd7374e6cec90dd06da40ccc2a479242f88be997983d7421bb6889a15bc3e5a72ba596ab53a51aa5d458fff83cefc43cf90203261c
6
+ metadata.gz: 5bb7389d9b2b04f6e6f16ffc632380a9c1de7d54c5e10910ccea90bf76b7cf1840325afe4f6101ebee493508808992f2b4ec9f460e632b9b3df3b922b7db643d
7
+ data.tar.gz: 566bfc63a3baf491d9c534dd2aae215872f03067e0eb4c883047d33fd08c53fb9bc873dab052591ea2b976ccc105c04f06af35dcaeaba90771ea008f9c31c824
@@ -7,4 +7,6 @@ rvm:
7
7
  - 2.0.0
8
8
  - 2.1.0
9
9
  - 2.2.0
10
- - ruby-head
10
+ - 2.3.0
11
+ - 2.4.0
12
+ - ruby-head
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.authors = ["Edgar Gonzalez"]
15
15
  gem.email = ["edgargonzalez@gmail.com"]
16
16
  gem.description = %q{Interface to the W3C Feed Validation online service http://validator.w3.org/feed/}
17
+ gem.homepage = "http://github.com/edgar/feedvalidator"
17
18
 
18
19
  gem.add_development_dependency 'rake'
19
20
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006 Edgar Gonzalez <edgar@lacaraoscura.com>
2
+ # Copyright (c) 2006 Edgar Gonzalez <edgargonzalez@gmail.com>
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -21,8 +21,8 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
  #
24
- # Provide an interface to the {W3C Feed Validation online service}[http://validator.w3.org/feed/],
25
- # based on its SOAP 1.2 support.
24
+ # Provide an interface to the {W3C Feed Validation online service}[http://validator.w3.org/feed/],
25
+ # based on its SOAP 1.2 support.
26
26
  #
27
27
  require 'net/http'
28
28
  require 'cgi'
@@ -31,8 +31,8 @@ require 'rexml/document'
31
31
 
32
32
  module W3C
33
33
 
34
- # Implements an interface to the {W3C Feed Validation online service}[http://validator.w3.org/feed/],
35
- # based on its SOAP 1.2 support.
34
+ # Implements an interface to the {W3C Feed Validation online service}[http://validator.w3.org/feed/],
35
+ # based on its SOAP 1.2 support.
36
36
  #
37
37
  # It helps to find errors in RSS or Atom feeds.
38
38
  # ---
@@ -40,52 +40,58 @@ module W3C
40
40
  # so do not abuse it: you should make your scripts sleep between requests.
41
41
  #
42
42
  class FeedValidator
43
- VERSION = "0.2.0"
43
+ VERSION = "0.2.1"
44
44
 
45
45
  # True if the w3c feed validation service not found errors in the feed.
46
46
  #
47
47
  attr_reader :valid
48
-
48
+
49
49
  # The complete response (as Net::HTTPResponse object) sent it by the w3c feed validation service.
50
50
  #
51
51
  attr_reader :response
52
-
52
+
53
53
  # Collection of _errors_ founded by the w3c feed validation service.
54
- # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
54
+ # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
55
55
  # <tt>:column</tt>, <tt>:text</tt>, <tt>:element</tt>
56
56
  #
57
57
  attr_reader :errors
58
58
 
59
59
  # Collection of _warnings_ founded by the w3c feed validation service.
60
- # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
60
+ # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
61
61
  # <tt>:column</tt>, <tt>:text</tt>, <tt>:element</tt>
62
62
  #
63
63
  attr_reader :warnings
64
64
 
65
65
  # Collection of _informations_ founded by the w3c feed validation service.
66
- # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
66
+ # Every error is a hash containing: <tt>:type</tt>, <tt>:line</tt>,
67
67
  # <tt>:column</tt>, <tt>:text</tt>, <tt>:element</tt>
68
68
  #
69
69
  attr_reader :informations
70
-
70
+
71
+ # request_type
72
+ # :manuel for direct input validation
73
+ # :url for url validation
74
+ attr_reader :request_type
75
+
71
76
  # Initialize the feed validator object
72
77
  #
73
78
  def initialize
74
79
  clear
75
80
  end
76
-
77
- # Validate the data provided.
81
+
82
+ # Validate the data provided.
78
83
  # Returns a true value if the validation succeeded (regardless of whether the feed contains errors).
79
84
  #
80
85
  def validate_data(rawdata)
81
86
  clear
82
87
  params = "rawdata=#{CGI.escape(rawdata)}&manual=1&output=soap12"
88
+ @request_type = :manual
83
89
  begin
84
90
  # headers = VERSION == "1.8.4" ? {'Content-Type'=>'application/x-www-form-urlencoded'} : {}
85
91
  headers = {'Content-Type'=>'application/x-www-form-urlencoded'}
86
92
  @response = Net::HTTP.start('validator.w3.org',80) {|http|
87
93
  http.post('/feed/check.cgi',params,headers)
88
- }
94
+ }
89
95
  rescue Exception => e
90
96
  warn "Exception: #{e.class}: #{e.message}\n\t#{e.backtrace.join("\n\t")}" if $VERBOSE
91
97
  return false
@@ -95,12 +101,13 @@ module W3C
95
101
  return true
96
102
  end
97
103
 
98
- # Validate the url provided.
104
+ # Validate the url provided.
99
105
  # Returns a true value if the validation succeeded (regardless of whether the feed contains errors).
100
106
  #
101
107
  def validate_url(url)
102
108
  clear
103
109
  params = "url=#{CGI.escape(url)}&output=soap12"
110
+ @request_type = :url
104
111
  begin
105
112
  @response = Net::HTTP.get_response('validator.w3.org',"/feed/check.cgi?#{params}",80)
106
113
  rescue Exception => e
@@ -116,16 +123,16 @@ module W3C
116
123
  def to_s
117
124
  msg = "Vailidity: #{@valid}\n"
118
125
  msg << "Errors count: #{@errors.size}\n"
119
- @errors.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
126
+ @errors.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
120
127
  msg << "Warnings count: #{@warnings.size}\n"
121
- @warnings.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
128
+ @warnings.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
122
129
  msg << "Informations count: #{@informations.size}\n"
123
- @informations.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
130
+ @informations.each_with_index{ |item, i| msg << "(#{i+1}) type: #{item[:type]} | line: #{item[:line]} | column: #{item[:column]} | text: #{item[:text]},\n"}
124
131
  msg
125
132
  end
126
133
 
127
134
  private
128
-
135
+
129
136
  def parse_response(response) #nodoc
130
137
  xml = REXML::Document.new(response)
131
138
  @valid = (/true/.match(xml.root.elements["env:Body/m:feedvalidationresponse/m:validity"].get_text.value))? true : false
@@ -141,6 +148,11 @@ module W3C
141
148
  end
142
149
  end
143
150
  xml.elements.each("env:Envelope/env:Body/m:feedvalidationresponse/m:warnings/m:warninglist/warning") do |warning|
151
+ next if
152
+ @request_type == :manual &&
153
+ warning.elements["type"].get_text.value == "SelfDoesntMatchLocation" &&
154
+ warning.elements["text"].get_text.value == "Self reference doesn't match document location"
155
+
144
156
  @warnings << {
145
157
  :type => warning.elements["type"].nil? ? "" : warning.elements["type"].get_text.value,
146
158
  :line => warning.elements["line"].nil? ? "" : warning.elements["line"].get_text.value,
@@ -162,11 +174,12 @@ module W3C
162
174
 
163
175
  def clear #nodoc
164
176
  @response = nil
177
+ @request_type = nil
165
178
  @valid = false
166
179
  @errors = []
167
180
  @warnings = []
168
181
  @informations = []
169
182
  end
170
-
183
+
171
184
  end
172
185
  end
@@ -36,7 +36,7 @@ module W3C
36
36
  parse_response(response.body)
37
37
  else
38
38
  parse_response(response)
39
- end
39
+ end
40
40
  end
41
41
  end
42
42
  end
@@ -62,7 +62,7 @@ class Test::Unit::TestCase
62
62
  begin
63
63
  response = File.open filename do |f| Marshal.load(f) end
64
64
  v.parse(response)
65
- rescue
65
+ rescue
66
66
  unless v.validate_data(fragment)
67
67
  warn("Sorry! could not validate the feed.")
68
68
  return assert(true,'')
@@ -71,7 +71,7 @@ class Test::Unit::TestCase
71
71
  end
72
72
  assert(v.valid?, v.valid? ? '' : v.to_s)
73
73
  end
74
-
74
+
75
75
  # Class-level method to quickly create validation tests for a bunch of actions at once in Rails.
76
76
  # For example, if you have a FooController with three actions, just add one line to foo_controller_test.rb:
77
77
  #
@@ -87,5 +87,5 @@ class Test::Unit::TestCase
87
87
  EOF
88
88
  end
89
89
  end
90
-
90
+
91
91
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006 Edgar Gonzalez <edgar@lacaraoscura.com>
2
+ # Copyright (c) 2006 Edgar Gonzalez <edgargonzalez@gmail.com>
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ require 'feed_validator/assertions'
27
27
  require 'digest/md5'
28
28
 
29
29
  class FeedValidatorAssertionsTest < Test::Unit::TestCase
30
-
30
+
31
31
  def test_assert_valid_feed
32
32
  # a valid feed
33
33
  data = ""
@@ -36,14 +36,14 @@ class FeedValidatorAssertionsTest < Test::Unit::TestCase
36
36
  }
37
37
  assert_valid_feed(data)
38
38
  end
39
-
39
+
40
40
  def test_cache
41
41
  # testing the cache using an invalid feed with a success response cached
42
- fragment_feed = ">--invalid feed--<"
42
+ fragment_feed = ">--invalid feed--<"
43
43
  response = File.open File.dirname(__FILE__) + "/../responses/success_with_warnings" do |f| Marshal.load(f) end
44
44
  filename = File.join Dir::tmpdir, 'feed.' + Digest::MD5.hexdigest(fragment_feed).to_s
45
45
  File.open filename, 'w+' do |f| Marshal.dump response, f end
46
- assert_valid_feed(fragment_feed)
46
+ assert_valid_feed(fragment_feed)
47
47
  end
48
-
48
+
49
49
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006 Edgar Gonzalez <edgar@lacaraoscura.com>
2
+ # Copyright (c) 2006 Edgar Gonzalez <edgargonzalez@gmail.com>
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ require 'test/unit'
26
26
  require 'feed_validator'
27
27
 
28
28
  class FeedValidatorTest < Test::Unit::TestCase
29
-
29
+
30
30
  def test_validate_url
31
31
  v = W3C::FeedValidator.new()
32
32
  assert v.validate_url('http://www.w3.org/QA/news.rss')
@@ -39,7 +39,7 @@ class FeedValidatorTest < Test::Unit::TestCase
39
39
 
40
40
  def test_validate_data
41
41
  v = W3C::FeedValidator.new()
42
-
42
+
43
43
  data = ""
44
44
  File.open(File.dirname(__FILE__) + "/../feeds/" + "weblog.rubyonrails.org_rss_2_0_articles.xml").each { |line|
45
45
  data << line
@@ -48,7 +48,7 @@ class FeedValidatorTest < Test::Unit::TestCase
48
48
  assert v.valid?
49
49
 
50
50
  assert v.errors.size == 0
51
- #assert v.warnings.size == 0
51
+ assert v.warnings.size == 0
52
52
  assert v.informations.size == 0
53
53
 
54
54
  data = ""
@@ -59,7 +59,7 @@ class FeedValidatorTest < Test::Unit::TestCase
59
59
  assert v.valid?
60
60
  assert v.errors.size == 0
61
61
  assert v.warnings.size >= 1
62
-
62
+
63
63
  data = ""
64
64
  File.open(File.dirname(__FILE__) + "/../feeds/" + "weblog.rubyonrails.org_rss_2_0_articles_malformed.xml").each { |line|
65
65
  data << line
@@ -70,5 +70,5 @@ class FeedValidatorTest < Test::Unit::TestCase
70
70
  assert v.errors.first[:line] == "5"
71
71
  assert v.errors.first[:column] == "4"
72
72
  end
73
-
73
+
74
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedvalidator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar Gonzalez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -61,7 +61,7 @@ files:
61
61
  - test/responses/success_with_warnings
62
62
  - test/unit/feed_validator_assertions_test.rb
63
63
  - test/unit/feed_validator_test.rb
64
- homepage:
64
+ homepage: http://github.com/edgar/feedvalidator
65
65
  licenses:
66
66
  - MIT
67
67
  metadata: {}
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  requirements: []
83
83
  rubyforge_project:
84
- rubygems_version: 2.4.5
84
+ rubygems_version: 2.6.4
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: Interface to the W3C Feed Validation online service http://validator.w3.org/feed/