unapi 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/unapi/service.rb +8 -6
- data/lib/unapi/validator.rb +26 -20
- metadata +34 -31
data/lib/unapi/service.rb
CHANGED
@@ -7,7 +7,7 @@ module UnAPI
|
|
7
7
|
# a class that represents the UnAPI Service
|
8
8
|
|
9
9
|
class Service
|
10
|
-
attr_reader :url, :status_code, :document, :content_type
|
10
|
+
attr_reader :url, :status_code, :document, :content_type, :last_url
|
11
11
|
|
12
12
|
def initialize(url)
|
13
13
|
@url = url
|
@@ -21,26 +21,28 @@ module UnAPI
|
|
21
21
|
@document.elements.each('.//formats/format') do |e|
|
22
22
|
formats << Format.new_from_element(e)
|
23
23
|
end
|
24
|
+
@last_url = @url
|
24
25
|
return formats
|
25
26
|
end
|
26
27
|
|
27
28
|
def formats_for_uri(uri)
|
28
29
|
formats = []
|
29
|
-
|
30
|
-
@status_code, @document, @content_type =
|
31
|
-
Utils.get_document(@url + "?uri=#{uri_esc}")
|
30
|
+
request_url = @url + "?uri=#{CGI.escape(uri)}"
|
31
|
+
@status_code, @document, @content_type = Utils.get_document request_url
|
32
32
|
@document.elements.each('.//formats/format') do |e|
|
33
33
|
formats << Format.new_from_element(e)
|
34
34
|
end
|
35
|
+
@last_url = request_url
|
35
36
|
return formats
|
36
37
|
end
|
37
38
|
|
38
39
|
def get_uri_in_format(uri, format)
|
39
40
|
uri_esc = CGI.escape(uri)
|
40
41
|
format_esc = CGI.escape(format)
|
42
|
+
request_url = @url + "?uri=#{uri_esc}&format=#{format_esc}"
|
41
43
|
@document = nil
|
42
|
-
@status_code, body, @content_type =
|
43
|
-
|
44
|
+
@status_code, body, @content_type = Utils.get url
|
45
|
+
@last_url = request_url
|
44
46
|
return body
|
45
47
|
end
|
46
48
|
end
|
data/lib/unapi/validator.rb
CHANGED
@@ -5,11 +5,11 @@ require 'unapi'
|
|
5
5
|
module UnAPI
|
6
6
|
|
7
7
|
class Message < String
|
8
|
-
attr_accessor :
|
8
|
+
attr_accessor :url
|
9
9
|
|
10
10
|
def initialize(string, url=nil)
|
11
11
|
super string
|
12
|
-
@
|
12
|
+
@url = url
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -27,14 +27,14 @@ module UnAPI
|
|
27
27
|
@failures = 0
|
28
28
|
end
|
29
29
|
|
30
|
-
def pass(msg)
|
30
|
+
def pass(msg, url=nil)
|
31
31
|
@passes += 1
|
32
|
-
handle Pass.new(msg)
|
32
|
+
handle Pass.new(msg, url)
|
33
33
|
end
|
34
34
|
|
35
|
-
def fail(msg)
|
35
|
+
def fail(msg, url=nil)
|
36
36
|
@failures += 1
|
37
|
-
handle Fail.new(msg)
|
37
|
+
handle Fail.new(msg, url)
|
38
38
|
end
|
39
39
|
|
40
40
|
def count
|
@@ -52,7 +52,7 @@ module UnAPI
|
|
52
52
|
@filehandle.print "#{count}: "
|
53
53
|
case msg
|
54
54
|
when Pass: @filehandle.print("PASS: #{msg}\n")
|
55
|
-
when Fail: @filehandle.print("FAIL: #{msg}\n")
|
55
|
+
when Fail: @filehandle.print("FAIL: #{msg} #{msg.url}\n")
|
56
56
|
when Warn: @filehandle.print("WARN: #{msg}\n")
|
57
57
|
end
|
58
58
|
end
|
@@ -86,7 +86,7 @@ module UnAPI
|
|
86
86
|
def check_service(page)
|
87
87
|
# make sure there is a service url
|
88
88
|
service_url = page.service_url
|
89
|
-
test service_url, "<link> url for unapi service"
|
89
|
+
test service_url, "<link> url for unapi service", service_url
|
90
90
|
return unless service_url
|
91
91
|
|
92
92
|
# get the unapi service from the page
|
@@ -105,7 +105,7 @@ module UnAPI
|
|
105
105
|
|
106
106
|
# go through each identifier
|
107
107
|
uris.each do |uri|
|
108
|
-
@handler.pass "got unapi-uri #{uri}"
|
108
|
+
@handler.pass "got unapi-uri #{uri}"
|
109
109
|
|
110
110
|
# verify it has formats available
|
111
111
|
formats = service.formats_for_uri(uri)
|
@@ -121,31 +121,37 @@ module UnAPI
|
|
121
121
|
formats.each do |format|
|
122
122
|
content = service.get_uri_in_format(uri, format.name)
|
123
123
|
test service.status_code == 200,
|
124
|
-
"request for #{uri} content responded with 200 status code"
|
124
|
+
"request for #{uri} content responded with 200 status code",
|
125
|
+
service.last_url
|
125
126
|
test (content != nil and content.length > 0),
|
126
|
-
"request for #{uri} returned data"
|
127
|
+
"request for #{uri} returned data",
|
128
|
+
service.last_url
|
127
129
|
test service.content_type == format.type,
|
128
|
-
"request for #{uri} returned mime type #{service.content_type}"
|
130
|
+
"request for #{uri} returned mime type #{service.content_type}",
|
131
|
+
service.last_url
|
129
132
|
|
130
133
|
# request an invalid uri with a valid format
|
131
134
|
service.get_uri_in_format('invaliduriinvaliduri', format.name)
|
132
135
|
test service.status_code == 404,
|
133
136
|
"request for invalid uri with valid format #{format.name} " +
|
134
|
-
"returned 404"
|
137
|
+
"returned 404", service.last_url
|
135
138
|
end
|
136
139
|
end
|
137
140
|
end
|
138
141
|
|
139
142
|
def check_formats(formats, service, target)
|
140
143
|
test service.content_type == 'application/xml',
|
141
|
-
"formats
|
144
|
+
"formats for #{target} has content-type #{service.content_type}",
|
145
|
+
service.last_url
|
142
146
|
|
143
147
|
if target == 'unapi service'
|
144
148
|
test service.status_code == 200,
|
145
|
-
"formats request for #{target} returned 200 status code"
|
149
|
+
"formats request for #{target} returned 200 status code",
|
150
|
+
service.last_url
|
146
151
|
else
|
147
152
|
test service.status_code == 300,
|
148
|
-
"formats request for #{target} return 300 status code"
|
153
|
+
"formats request for #{target} return 300 status code",
|
154
|
+
service.last_url
|
149
155
|
end
|
150
156
|
|
151
157
|
if formats.length > 0
|
@@ -159,15 +165,15 @@ module UnAPI
|
|
159
165
|
"format #{count} for #{target} has a type"
|
160
166
|
end
|
161
167
|
else
|
162
|
-
@handler.fail "no formats found for #{target}"
|
168
|
+
@handler.fail "no formats found for #{target}", service.last_url
|
163
169
|
end
|
164
170
|
end
|
165
171
|
|
166
|
-
def test(ok, msg)
|
172
|
+
def test(ok, msg, url=nil)
|
167
173
|
if ok
|
168
|
-
@handler.pass(msg)
|
174
|
+
@handler.pass(msg, url)
|
169
175
|
else
|
170
|
-
@handler.fail(msg)
|
176
|
+
@handler.fail(msg, url)
|
171
177
|
end
|
172
178
|
end
|
173
179
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
|
1
|
+
!ruby/object:Gem::Specification
|
2
2
|
rubygems_version: 0.8.11
|
3
3
|
specification_version: 1
|
4
4
|
name: unapi
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-03-14 00:00:00 -
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2006-03-14 00:00:00 -05:00
|
8
8
|
summary: A library for working with the unapi protocol
|
9
9
|
require_paths:
|
10
|
-
|
10
|
+
- lib
|
11
11
|
email: ehs@pobox.com
|
12
12
|
homepage: http://www.textualize.com/unapi
|
13
13
|
rubyforge_project:
|
@@ -18,43 +18,46 @@ bindir: bin
|
|
18
18
|
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
version: 0.0.0
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
25
24
|
version:
|
26
25
|
platform: ruby
|
27
26
|
signing_key:
|
28
27
|
cert_chain:
|
29
28
|
authors:
|
30
|
-
|
29
|
+
- Ed Summers
|
31
30
|
files:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
31
|
+
- lib/unapi
|
32
|
+
- lib/unapi.rb
|
33
|
+
- lib/unapi/validator.rb
|
34
|
+
- lib/unapi/service.rb
|
35
|
+
- lib/unapi/utils.rb
|
36
|
+
- lib/unapi/format.rb
|
37
|
+
- lib/unapi/page.rb
|
38
|
+
- test/unapi_servlet.rb
|
39
|
+
- test/index.html
|
40
|
+
- test/unapi_test.rb
|
41
|
+
- test/validate_test.rb
|
43
42
|
test_files:
|
44
|
-
|
43
|
+
- test.rb
|
45
44
|
rdoc_options: []
|
45
|
+
|
46
46
|
extra_rdoc_files: []
|
47
|
+
|
47
48
|
executables: []
|
49
|
+
|
48
50
|
extensions: []
|
51
|
+
|
49
52
|
requirements: []
|
53
|
+
|
50
54
|
dependencies:
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubyful_soup
|
57
|
+
version_requirement:
|
58
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.4
|
63
|
+
version:
|