w3c_validators 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzJiNDFhMmU0NzMyZTE5MTJkMTQ5YTIyMTMxMDM4NjI1ZGFlOTJkMw==
5
- data.tar.gz: !binary |-
6
- ZGJjNmI4NDNhMGY1ZWNkZDkyNDg2MGM1N2MyMjI1YzU1ZWYyYzk1Zg==
2
+ SHA1:
3
+ metadata.gz: 12412eb5ef51e699318bd2ecbefe774d9b545925
4
+ data.tar.gz: 16f940ca45dfc490a12a81abec9829987435628e
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YWU1OWYyZGY1YTRjNDEwYThhZjg3Mjc2ODZiNWY5YzUxYmQ1NmRjNzFmOTEw
10
- ZDI1YWQyMDBmZjRmZThmMzkxY2Q1NTdhMGM1MjEyMTRhZjFlYTYzOTVmZTJk
11
- OWE4ODBhMmEwMDVlZDU1MmYwYmNmMTQyZTM0OWY5MGUwOTUxYzc=
12
- data.tar.gz: !binary |-
13
- MTRiNzU0MDlhODFjZjk0MDk2OGE2MTAyZjJlZjY5ZDRlYmJjYTNkYjU5N2M1
14
- YzcyNjVhZjhlMzg1ZGQzZDkzNTdjODQ5ZDBmYzgyMzIyMmJiNzdlOWVhYTg3
15
- Yzc1NWEwNDVmYzc1YWI0Zjc5ZTRlZjM4MWVlZGMwZmU1OTM0YjA=
6
+ metadata.gz: 99f800b1adcda869935e1e60f5660ca952e3d1c0d98befc35485e642ce0b00b931dd92aa36b8cb1a0dd737697bc346caf51c9c0b369320910bd9b41dcb995919
7
+ data.tar.gz: afb1998740896bdb7fbc5845788fa2e1885e83e8a692da4fa1ccc0615c0054b8f54e394ab19b655448a6e842930a87d35f587237c90318f3a33086c75cb3e88f
data/CHANGELOG CHANGED
@@ -58,3 +58,8 @@
58
58
  * relax constraint on json gem to >=1.8 instead of ~>2.0
59
59
  * add test of ruby 2.4.0 + drop test of ruby 2.0.0
60
60
 
61
+ == Version 1.3.3
62
+ * add deprecation warning for class MarkupValidator
63
+ * raise ValidatorUnavailable when connection to uri is refused
64
+ * Change the Nu Validator URL to "https://validator.w3.org/nu/" (https://validator.nu is returning 502)
65
+
@@ -14,6 +14,7 @@ module W3CValidators
14
14
  #
15
15
  # See Validator#new for proxy server options.
16
16
  def initialize(options = {})
17
+ puts "The MarkupValidator class is deprecated (cf. https://validator.w3.org/docs/obsolete-api.html) as it cannot process HTML5 documents.\nPlease prefer the NuValidator class instead."
17
18
  if options[:validator_uri]
18
19
  @validator_uri = URI.parse(options[:validator_uri])
19
20
  options.delete(options[:validator_uri])
@@ -2,7 +2,7 @@ require 'json'
2
2
 
3
3
  module W3CValidators
4
4
  class NuValidator < Validator
5
- MARKUP_VALIDATOR_URI = 'https://validator.nu/'
5
+ MARKUP_VALIDATOR_URI = 'https://validator.w3.org/nu/'
6
6
 
7
7
  # Create a new instance of the NuValidator.
8
8
  #
@@ -174,7 +174,7 @@ module W3CValidators
174
174
  #++
175
175
  def handle_exception(e, msg = '') # :nodoc:
176
176
  case e
177
- when Net::HTTPServerException, SocketError
177
+ when Net::HTTPServerException, SocketError, Errno::ECONNREFUSED
178
178
  msg = "unable to connect to the validator at #{@validator_uri} (response was #{e.message})."
179
179
  raise ValidatorUnavailable, msg, caller
180
180
  when JSON::ParserError, Nokogiri::XML::SyntaxError
@@ -1,3 +1,3 @@
1
1
  module W3CValidators
2
- VERSION = "1.3.2"
2
+ VERSION = "1.3.3"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://validator.nu/?doc=https://w3c-validators.github.io/w3c_validators/valid_html5.html&out=json&parser=html&showsource=yes
5
+ uri: https://validator.w3.org/nu/?doc=https://w3c-validators.github.io/w3c_validators/valid_html5.html&out=json&parser=html&showsource=yes
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -18,16 +18,8 @@ http_interactions:
18
18
  code: 200
19
19
  message: OK
20
20
  headers:
21
- Server:
22
- - nginx/1.11.5
23
21
  Date:
24
- - Sun, 18 Dec 2016 11:03:30 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
22
+ - Thu, 29 Jun 2017 19:17:26 GMT
31
23
  Accept-Encoding:
32
24
  - gzip
33
25
  Access-Control-Allow-Origin:
@@ -38,14 +30,33 @@ http_interactions:
38
30
  - Thu, 01 Jan 1970 00:00:00 GMT
39
31
  Cache-Control:
40
32
  - no-cache
33
+ Content-Type:
34
+ - application/json; charset=utf-8
41
35
  Vary:
42
36
  - Accept-Encoding, User-Agent
37
+ Transfer-Encoding:
38
+ - chunked
39
+ Server:
40
+ - Jetty(9.2.9.v20150224)
43
41
  Strict-Transport-Security:
44
- - max-age=31536000; includeSubDomains; preload
42
+ - max-age=15552015; preload
43
+ Public-Key-Pins:
44
+ - pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4=";
45
+ pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; max-age=864000
46
+ X-Frame-Options:
47
+ - deny
48
+ X-Xss-Protection:
49
+ - 1; mode=block
45
50
  body:
46
51
  encoding: ASCII-8BIT
47
- string: |
48
- {"url":"https://w3c-validators.github.io/w3c_validators/valid_html5.html","messages":[],"source":{"type":"text/html","encoding":"utf-8","code":"<!DOCTYPE html>\n<html lang=\"en-ca\">\n <head>\n\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n <title>HTML 5 Example</title>\n </head>\n <body>\n <p>This is a sample HTML 5 document.</p>\n <section>\n\t <h1>Example of paragraphs</h1>\n\t This is the <em>first</em> paragraph in this example.\n\t <p>This is the second.</p>\n\t <!-- This is not a paragraph. -->\n\t</section>\n </body>\n</html>"}}
52
+ string: '{"url":"https://w3c-validators.github.io/w3c_validators/valid_html5.html","messages":[],"source":{"type":"text/html","encoding":"utf-8","code":"<!DOCTYPE
53
+ html>\n<html lang=\"en-ca\">\n <head>\n\t<meta http-equiv=\"Content-type\"
54
+ content=\"text/html; charset=utf-8\">\n <title>HTML 5 Example</title>\n </head>\n <body>\n <p>This
55
+ is a sample HTML 5 document.</p>\n <section>\n\t <h1>Example of paragraphs</h1>\n\t This
56
+ is the <em>first</em> paragraph in this example.\n\t <p>This is the second.</p>\n\t <!--
57
+ This is not a paragraph. -->\n\t</section>\n </body>\n</html>"}}
58
+
59
+ '
49
60
  http_version:
50
- recorded_at: Sun, 18 Dec 2016 11:03:30 GMT
61
+ recorded_at: Thu, 29 Jun 2017 19:17:27 GMT
51
62
  recorded_with: VCR 3.0.3
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://validator.nu/?out=json&parser=html&showsource=yes
5
+ uri: https://validator.w3.org/nu/?out=json&parser=html&showsource=yes
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: "<!DOCTYPE html>\n<html lang=\"en-ca\">\n <head>\n <!--<meta http-equiv=\"Content-type\"
@@ -26,16 +26,8 @@ http_interactions:
26
26
  code: 200
27
27
  message: OK
28
28
  headers:
29
- Server:
30
- - nginx/1.11.5
31
29
  Date:
32
- - Sat, 17 Dec 2016 21:22:38 GMT
33
- Content-Type:
34
- - application/json; charset=utf-8
35
- Transfer-Encoding:
36
- - chunked
37
- Connection:
38
- - keep-alive
30
+ - Thu, 29 Jun 2017 19:24:20 GMT
39
31
  Accept-Encoding:
40
32
  - gzip
41
33
  Access-Control-Allow-Origin:
@@ -46,33 +38,25 @@ http_interactions:
46
38
  - Thu, 01 Jan 1970 00:00:00 GMT
47
39
  Cache-Control:
48
40
  - no-cache
41
+ Content-Type:
42
+ - application/json; charset=utf-8
43
+ Transfer-Encoding:
44
+ - chunked
45
+ Server:
46
+ - Jetty(9.2.9.v20150224)
49
47
  Strict-Transport-Security:
50
- - max-age=31536000; includeSubDomains; preload
48
+ - max-age=15552015; preload
49
+ Public-Key-Pins:
50
+ - pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4=";
51
+ pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; max-age=864000
52
+ X-Frame-Options:
53
+ - deny
54
+ X-Xss-Protection:
55
+ - 1; mode=block
51
56
  body:
52
57
  encoding: ASCII-8BIT
53
58
  string: !binary |-
54
- eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJs
55
- YXN0Q29sdW1uIjo5LCJmaXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0
56
- YWcgZm9yICDigJxib2R54oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xv
57
- c2VkIGVsZW1lbnRzLiIsImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5c
58
- bjwvaHRtIiwiaGlsaXRlU3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsi
59
- dHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywi
60
- Zmlyc3RDb2x1bW4iOjUsIm1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKA
61
- nHNlY3Rpb27igJ0uIiwiZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+
62
- XG5cdCAgPGgiLCJoaWxpdGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1d
63
- LCJzb3VyY2UiOnsidHlwZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoiVVRG
64
- LTgiLCJjb2RlIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4t
65
- Y2FcIj5cbiAgPGhlYWQ+XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJD
66
- b250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlz
67
- by04ODU5LTFcIj4tLT5cbiAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3Rp
68
- dGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhh
69
- dmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2Fy
70
- bmluZyAobm8gY29udGVudCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEg
71
- c2FtcGxlIEhUTUwgNSBkb2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5c
72
- dCAgPGgxPkV4YW1wbGUgb2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBp
73
- cyB0aGUgPGVtPmZpcnN0PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBs
74
- ZS5cblx0ICA8cD5UaGlzIGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRl
75
- c3Q8YnI+dGVzdDwvcD5cbiAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
59
+ eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJsYXN0Q29sdW1uIjo5LCJmaXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0YWcgZm9yICDigJxib2R54oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xvc2VkIGVsZW1lbnRzLiIsImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5cbjwvaHRtIiwiaGlsaXRlU3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywiZmlyc3RDb2x1bW4iOjUsIm1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKAnHNlY3Rpb27igJ0uIiwiZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgiLCJoaWxpdGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1dLCJzb3VyY2UiOnsidHlwZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoiVVRGLTgiLCJjb2RlIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4tY2FcIj5cbiAgPGhlYWQ+XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTFcIj4tLT5cbiAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhhdmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2FybmluZyAobm8gY29udGVudCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEgc2FtcGxlIEhUTUwgNSBkb2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgxPkV4YW1wbGUgb2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBpcyB0aGUgPGVtPmZpcnN0PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBsZS5cblx0ICA8cD5UaGlzIGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRlc3Q8YnI+dGVzdDwvcD5cbiAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
76
60
  http_version:
77
- recorded_at: Sat, 17 Dec 2016 21:22:38 GMT
61
+ recorded_at: Thu, 29 Jun 2017 19:24:21 GMT
78
62
  recorded_with: VCR 3.0.3
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://validator.nu/?out=json&parser=html&showsource=yes
5
+ uri: https://validator.w3.org/nu/?out=json&parser=html&showsource=yes
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: |2
@@ -35,16 +35,8 @@ http_interactions:
35
35
  code: 200
36
36
  message: OK
37
37
  headers:
38
- Server:
39
- - nginx/1.11.5
40
38
  Date:
41
- - Sat, 17 Dec 2016 21:22:39 GMT
42
- Content-Type:
43
- - application/json; charset=utf-8
44
- Transfer-Encoding:
45
- - chunked
46
- Connection:
47
- - keep-alive
39
+ - Thu, 29 Jun 2017 19:22:16 GMT
48
40
  Accept-Encoding:
49
41
  - gzip
50
42
  Access-Control-Allow-Origin:
@@ -55,33 +47,25 @@ http_interactions:
55
47
  - Thu, 01 Jan 1970 00:00:00 GMT
56
48
  Cache-Control:
57
49
  - no-cache
50
+ Content-Type:
51
+ - application/json; charset=utf-8
52
+ Transfer-Encoding:
53
+ - chunked
54
+ Server:
55
+ - Jetty(9.2.9.v20150224)
58
56
  Strict-Transport-Security:
59
- - max-age=31536000; includeSubDomains; preload
57
+ - max-age=15552015; preload
58
+ Public-Key-Pins:
59
+ - pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4=";
60
+ pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; max-age=864000
61
+ X-Frame-Options:
62
+ - deny
63
+ X-Xss-Protection:
64
+ - 1; mode=block
60
65
  body:
61
66
  encoding: ASCII-8BIT
62
67
  string: !binary |-
63
- eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE0LCJs
64
- YXN0Q29sdW1uIjoxNSwiZmlyc3RDb2x1bW4iOjksIm1lc3NhZ2UiOiJFbmQg
65
- dGFnIGZvciAg4oCcYm9keeKAnSBzZWVuLCBidXQgdGhlcmUgd2VyZSB1bmNs
66
- b3NlZCBlbGVtZW50cy4iLCJleHRyYWN0IjoiPlxuICAgICAgICA8L2JvZHk+
67
- XG4gICAgICIsImhpbGl0ZVN0YXJ0IjoxMCwiaGlsaXRlTGVuZ3RoIjo3fSx7
68
- InR5cGUiOiJlcnJvciIsImxhc3RMaW5lIjo5LCJsYXN0Q29sdW1uIjoxOSwi
69
- Zmlyc3RDb2x1bW4iOjExLCJtZXNzYWdlIjoiVW5jbG9zZWQgZWxlbWVudCDi
70
- gJxzZWN0aW9u4oCdLiIsImV4dHJhY3QiOiIgICAgICAgICAgPHNlY3Rpb24+
71
- XG4gICAgICIsImhpbGl0ZVN0YXJ0IjoxMCwiaGlsaXRlTGVuZ3RoIjo5fV0s
72
- InNvdXJjZSI6eyJ0eXBlIjoidGV4dC9odG1sIiwiZW5jb2RpbmciOiJVVEYt
73
- OCIsImNvZGUiOiIgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgIDxodG1s
74
- IGxhbmc9XCJlbi1jYVwiPlxuICAgICAgICA8aGVhZD5cbiAgICAgICAgICA8
75
- dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICAgICAgICA8L2hlYWQ+
76
- XG4gICAgICAgIDxib2R5PlxuICAgICAgICAgIDwhLS0gc2hvdWxkIGhhdmUg
77
- b25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIC0tPlxuICAgICAgICAg
78
- IDxwPlRoaXMgaXMgYSBzYW1wbGUgSFRNTCA1IGRvY3VtZW50LjwvcD5cbiAg
79
- ICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICA8aDE+RXhhbXBsZSBvZiBw
80
- YXJhZ3JhcGhzPC9oMT5cbiAgICAgICAgICBUaGlzIGlzIHRoZSA8ZW0+Zmly
81
- c3Q8L2VtPiBwYXJhZ3JhcGggaW4gdGhpcyBleGFtcGxlLlxuICAgICAgICAg
82
- IDxwPlRoaXMgaXMgdGhlIHNlY29uZC48L3A+XG4gICAgICAgICAgPHA+VGVz
83
- dDxicj50ZXN0PC9wPlxuICAgICAgICA8L2JvZHk+XG4gICAgICA8L2h0bWw+
84
- In19Cg==
68
+ eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE0LCJsYXN0Q29sdW1uIjoxNSwiZmlyc3RDb2x1bW4iOjksIm1lc3NhZ2UiOiJFbmQgdGFnIGZvciAg4oCcYm9keeKAnSBzZWVuLCBidXQgdGhlcmUgd2VyZSB1bmNsb3NlZCBlbGVtZW50cy4iLCJleHRyYWN0IjoiPlxuICAgICAgICA8L2JvZHk+XG4gICAgICIsImhpbGl0ZVN0YXJ0IjoxMCwiaGlsaXRlTGVuZ3RoIjo3fSx7InR5cGUiOiJlcnJvciIsImxhc3RMaW5lIjo5LCJsYXN0Q29sdW1uIjoxOSwiZmlyc3RDb2x1bW4iOjExLCJtZXNzYWdlIjoiVW5jbG9zZWQgZWxlbWVudCDigJxzZWN0aW9u4oCdLiIsImV4dHJhY3QiOiIgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICIsImhpbGl0ZVN0YXJ0IjoxMCwiaGlsaXRlTGVuZ3RoIjo5fV0sInNvdXJjZSI6eyJ0eXBlIjoidGV4dC9odG1sIiwiZW5jb2RpbmciOiJVVEYtOCIsImNvZGUiOiIgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgIDxodG1sIGxhbmc9XCJlbi1jYVwiPlxuICAgICAgICA8aGVhZD5cbiAgICAgICAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICAgICAgICA8L2hlYWQ+XG4gICAgICAgIDxib2R5PlxuICAgICAgICAgIDwhLS0gc2hvdWxkIGhhdmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIC0tPlxuICAgICAgICAgIDxwPlRoaXMgaXMgYSBzYW1wbGUgSFRNTCA1IGRvY3VtZW50LjwvcD5cbiAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICA8aDE+RXhhbXBsZSBvZiBwYXJhZ3JhcGhzPC9oMT5cbiAgICAgICAgICBUaGlzIGlzIHRoZSA8ZW0+Zmlyc3Q8L2VtPiBwYXJhZ3JhcGggaW4gdGhpcyBleGFtcGxlLlxuICAgICAgICAgIDxwPlRoaXMgaXMgdGhlIHNlY29uZC48L3A+XG4gICAgICAgICAgPHA+VGVzdDxicj50ZXN0PC9wPlxuICAgICAgICA8L2JvZHk+XG4gICAgICA8L2h0bWw+In19Cg==
85
69
  http_version:
86
- recorded_at: Sat, 17 Dec 2016 21:22:39 GMT
70
+ recorded_at: Thu, 29 Jun 2017 19:22:17 GMT
87
71
  recorded_with: VCR 3.0.3
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://validator.nu/?out=json&parser=html&showsource=yes
5
+ uri: https://validator.w3.org/nu/?out=json&parser=html&showsource=yes
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: "<!DOCTYPE html>\n<html lang=\"en-ca\">\n <head>\n <!--<meta http-equiv=\"Content-type\"
@@ -26,16 +26,8 @@ http_interactions:
26
26
  code: 200
27
27
  message: OK
28
28
  headers:
29
- Server:
30
- - nginx/1.11.5
31
29
  Date:
32
- - Sat, 17 Dec 2016 21:25:52 GMT
33
- Content-Type:
34
- - application/json; charset=utf-8
35
- Transfer-Encoding:
36
- - chunked
37
- Connection:
38
- - keep-alive
30
+ - Thu, 29 Jun 2017 19:24:01 GMT
39
31
  Accept-Encoding:
40
32
  - gzip
41
33
  Access-Control-Allow-Origin:
@@ -46,33 +38,25 @@ http_interactions:
46
38
  - Thu, 01 Jan 1970 00:00:00 GMT
47
39
  Cache-Control:
48
40
  - no-cache
41
+ Content-Type:
42
+ - application/json; charset=utf-8
43
+ Transfer-Encoding:
44
+ - chunked
45
+ Server:
46
+ - Jetty(9.2.9.v20150224)
49
47
  Strict-Transport-Security:
50
- - max-age=31536000; includeSubDomains; preload
48
+ - max-age=15552015; preload
49
+ Public-Key-Pins:
50
+ - pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4=";
51
+ pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; max-age=864000
52
+ X-Frame-Options:
53
+ - deny
54
+ X-Xss-Protection:
55
+ - 1; mode=block
51
56
  body:
52
57
  encoding: ASCII-8BIT
53
58
  string: !binary |-
54
- eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJs
55
- YXN0Q29sdW1uIjo5LCJmaXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0
56
- YWcgZm9yICDigJxib2R54oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xv
57
- c2VkIGVsZW1lbnRzLiIsImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5c
58
- bjwvaHRtIiwiaGlsaXRlU3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsi
59
- dHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywi
60
- Zmlyc3RDb2x1bW4iOjUsIm1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKA
61
- nHNlY3Rpb27igJ0uIiwiZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+
62
- XG5cdCAgPGgiLCJoaWxpdGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1d
63
- LCJzb3VyY2UiOnsidHlwZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoiVVRG
64
- LTgiLCJjb2RlIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4t
65
- Y2FcIj5cbiAgPGhlYWQ+XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJD
66
- b250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlz
67
- by04ODU5LTFcIj4tLT5cbiAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3Rp
68
- dGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhh
69
- dmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2Fy
70
- bmluZyAobm8gY29udGVudCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEg
71
- c2FtcGxlIEhUTUwgNSBkb2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5c
72
- dCAgPGgxPkV4YW1wbGUgb2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBp
73
- cyB0aGUgPGVtPmZpcnN0PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBs
74
- ZS5cblx0ICA8cD5UaGlzIGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRl
75
- c3Q8YnI+dGVzdDwvcD5cbiAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
59
+ eyJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJsYXN0Q29sdW1uIjo5LCJmaXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0YWcgZm9yICDigJxib2R54oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xvc2VkIGVsZW1lbnRzLiIsImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5cbjwvaHRtIiwiaGlsaXRlU3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywiZmlyc3RDb2x1bW4iOjUsIm1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKAnHNlY3Rpb27igJ0uIiwiZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgiLCJoaWxpdGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1dLCJzb3VyY2UiOnsidHlwZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoiVVRGLTgiLCJjb2RlIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4tY2FcIj5cbiAgPGhlYWQ+XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTFcIj4tLT5cbiAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhhdmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2FybmluZyAobm8gY29udGVudCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEgc2FtcGxlIEhUTUwgNSBkb2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgxPkV4YW1wbGUgb2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBpcyB0aGUgPGVtPmZpcnN0PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBsZS5cblx0ICA8cD5UaGlzIGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRlc3Q8YnI+dGVzdDwvcD5cbiAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
76
60
  http_version:
77
- recorded_at: Sat, 17 Dec 2016 21:25:52 GMT
61
+ recorded_at: Thu, 29 Jun 2017 19:24:01 GMT
78
62
  recorded_with: VCR 3.0.3
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://validator.nu/?doc=https://w3c-validators.github.io/w3c_validators/invalid_html5.html&out=json&parser=html&showsource=yes
5
+ uri: https://validator.w3.org/nu/?doc=https://w3c-validators.github.io/w3c_validators/invalid_html5.html&out=json&parser=html&showsource=yes
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -18,16 +18,8 @@ http_interactions:
18
18
  code: 200
19
19
  message: OK
20
20
  headers:
21
- Server:
22
- - nginx/1.11.5
23
21
  Date:
24
- - Sun, 18 Dec 2016 11:04:54 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
22
+ - Thu, 29 Jun 2017 19:24:39 GMT
31
23
  Accept-Encoding:
32
24
  - gzip
33
25
  Access-Control-Allow-Origin:
@@ -38,37 +30,27 @@ http_interactions:
38
30
  - Thu, 01 Jan 1970 00:00:00 GMT
39
31
  Cache-Control:
40
32
  - no-cache
33
+ Content-Type:
34
+ - application/json; charset=utf-8
41
35
  Vary:
42
36
  - Accept-Encoding, User-Agent
37
+ Transfer-Encoding:
38
+ - chunked
39
+ Server:
40
+ - Jetty(9.2.9.v20150224)
43
41
  Strict-Transport-Security:
44
- - max-age=31536000; includeSubDomains; preload
42
+ - max-age=15552015; preload
43
+ Public-Key-Pins:
44
+ - pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4=";
45
+ pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; max-age=864000
46
+ X-Frame-Options:
47
+ - deny
48
+ X-Xss-Protection:
49
+ - 1; mode=block
45
50
  body:
46
51
  encoding: ASCII-8BIT
47
52
  string: !binary |-
48
- eyJ1cmwiOiJodHRwczovL3czYy12YWxpZGF0b3JzLmdpdGh1Yi5pby93M2Nf
49
- dmFsaWRhdG9ycy9pbnZhbGlkX2h0bWw1Lmh0bWwiLCJtZXNzYWdlcyI6W3si
50
- dHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJsYXN0Q29sdW1uIjo5LCJm
51
- aXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0YWcgZm9yICDigJxib2R5
52
- 4oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xvc2VkIGVsZW1lbnRzLiIs
53
- ImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5cbjwvaHRtIiwiaGlsaXRl
54
- U3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsidHlwZSI6ImVycm9yIiwi
55
- bGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywiZmlyc3RDb2x1bW4iOjUs
56
- Im1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKAnHNlY3Rpb27igJ0uIiwi
57
- ZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgiLCJoaWxp
58
- dGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1dLCJzb3VyY2UiOnsidHlw
59
- ZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoidXRmLTgiLCJjb2RlIjoiPCFE
60
- T0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4tY2FcIj5cbiAgPGhlYWQ+
61
- XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LXR5cGVcIiBj
62
- b250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTFcIj4tLT5c
63
- biAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICA8L2hlYWQ+
64
- XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhhdmUgb25lIGVycm9yICht
65
- aXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2FybmluZyAobm8gY29udGVu
66
- dCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEgc2FtcGxlIEhUTUwgNSBk
67
- b2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgxPkV4YW1wbGUg
68
- b2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBpcyB0aGUgPGVtPmZpcnN0
69
- PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBsZS5cblx0ICA8cD5UaGlz
70
- IGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRlc3Q8YnI+dGVzdDwvcD5c
71
- biAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
53
+ eyJ1cmwiOiJodHRwczovL3czYy12YWxpZGF0b3JzLmdpdGh1Yi5pby93M2NfdmFsaWRhdG9ycy9pbnZhbGlkX2h0bWw1Lmh0bWwiLCJtZXNzYWdlcyI6W3sidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjE1LCJsYXN0Q29sdW1uIjo5LCJmaXJzdENvbHVtbiI6MywibWVzc2FnZSI6IkVuZCB0YWcgZm9yICDigJxib2R54oCdIHNlZW4sIGJ1dCB0aGVyZSB3ZXJlIHVuY2xvc2VkIGVsZW1lbnRzLiIsImV4dHJhY3QiOiJlc3Q8L3A+XG4gIDwvYm9keT5cbjwvaHRtIiwiaGlsaXRlU3RhcnQiOjEwLCJoaWxpdGVMZW5ndGgiOjd9LHsidHlwZSI6ImVycm9yIiwibGFzdExpbmUiOjEwLCJsYXN0Q29sdW1uIjoxMywiZmlyc3RDb2x1bW4iOjUsIm1lc3NhZ2UiOiJVbmNsb3NlZCBlbGVtZW50IOKAnHNlY3Rpb27igJ0uIiwiZXh0cmFjdCI6Ii48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgiLCJoaWxpdGVTdGFydCI6MTAsImhpbGl0ZUxlbmd0aCI6OX1dLCJzb3VyY2UiOnsidHlwZSI6InRleHQvaHRtbCIsImVuY29kaW5nIjoidXRmLTgiLCJjb2RlIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW4tY2FcIj5cbiAgPGhlYWQ+XG4gICAgPCEtLTxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTFcIj4tLT5cbiAgICA8dGl0bGU+SFRNTCA1IEV4YW1wbGU8L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICBcdDwhLS0gc2hvdWxkIGhhdmUgb25lIGVycm9yIChtaXNzaW5nIDwvc2VjdGlvbj4pIGFuZCBvbmUgd2FybmluZyAobm8gY29udGVudCB0eXBlKSAtLT5cbiAgICA8cD5UaGlzIGlzIGEgc2FtcGxlIEhUTUwgNSBkb2N1bWVudC48L3A+XG4gICAgPHNlY3Rpb24+XG5cdCAgPGgxPkV4YW1wbGUgb2YgcGFyYWdyYXBoczwvaDE+XG5cdCAgVGhpcyBpcyB0aGUgPGVtPmZpcnN0PC9lbT4gcGFyYWdyYXBoIGluIHRoaXMgZXhhbXBsZS5cblx0ICA8cD5UaGlzIGlzIHRoZSBzZWNvbmQuPC9wPlxuXHQgIDxwPlRlc3Q8YnI+dGVzdDwvcD5cbiAgPC9ib2R5PlxuPC9odG1sPiJ9fQo=
72
54
  http_version:
73
- recorded_at: Sun, 18 Dec 2016 11:04:54 GMT
55
+ recorded_at: Thu, 29 Jun 2017 19:24:39 GMT
74
56
  recorded_with: VCR 3.0.3
@@ -17,7 +17,7 @@ class ExceptionTests < Test::Unit::TestCase
17
17
  VCR.turned_off do
18
18
  WebMock.allow_net_connect!
19
19
  ['http://noexist/', 'http://noexist.badtld/',
20
- 'http://example.com/noexist'].each do |uri|
20
+ 'http://example.com/noexist', 'http://localhost:9999/'].each do |uri|
21
21
  v = MarkupValidator.new(:validator_uri => uri)
22
22
  assert_raise ValidatorUnavailable do
23
23
  v.validate_text(@valid_fragment)
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: w3c_validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-21 00:00:00.000000000 Z
11
+ date: 2017-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: test-unit
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description:
@@ -100,8 +100,8 @@ executables: []
100
100
  extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
- - .gitignore
104
- - .travis.yml
103
+ - ".gitignore"
104
+ - ".travis.yml"
105
105
  - CHANGELOG
106
106
  - Gemfile
107
107
  - LICENSE
@@ -179,17 +179,17 @@ require_paths:
179
179
  - lib
180
180
  required_ruby_version: !ruby/object:Gem::Requirement
181
181
  requirements:
182
- - - ~>
182
+ - - "~>"
183
183
  - !ruby/object:Gem::Version
184
184
  version: '2.0'
185
185
  required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ! '>='
187
+ - - ">="
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  requirements: []
191
191
  rubyforge_project:
192
- rubygems_version: 2.4.8
192
+ rubygems_version: 2.6.11
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: A Ruby wrapper for the World Wide Web Consortium’s online validation services.