ape 1.6.0 → 1.7.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.
data/Rakefile CHANGED
@@ -7,9 +7,14 @@ require 'rake/rdoctask'
7
7
  $:.unshift File.dirname(__FILE__) + '/lib'
8
8
  require 'ape'
9
9
 
10
- def spec
11
- spec ||= Gem::Specification.new do |s|
12
- s.platform = Gem::Platform::RUBY
10
+ ape_dependencies = {
11
+ :sinatra => '>= 0.9.4',
12
+ :erubis => '>= 2.5.0',
13
+ }
14
+
15
+ begin
16
+ require 'jeweler'
17
+ Jeweler::Tasks.new do |s|
13
18
  s.name = 'ape'
14
19
  s.version = Ape::VERSION::STRING
15
20
  s.authors = ['Tim Bray', 'David Calavera']
@@ -27,12 +32,15 @@ def spec
27
32
 
28
33
  s.rubyforge_project = 'ape'
29
34
 
30
- s.add_dependency 'rake', '>= 0.8'
31
- s.add_dependency 'mongrel', '>= 1.1.3'
32
- s.add_dependency 'erubis', '>= 2.5.0'
33
- s.add_dependency 'rubyforge', '>= 0.4'
34
- s.add_dependency 'mocha', '>= 0.9.0'
35
+ ape_dependencies.each do |name, version|
36
+ s.add_dependency name.to_s, version
37
+ end
38
+ s.add_development_dependency :mocha, '>= 0.9.0'
35
39
  end
40
+
41
+ Jeweler::GemcutterTasks.new
42
+ rescue LoadError
43
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
36
44
  end
37
45
 
38
46
  def install_gem(*args)
@@ -44,9 +52,8 @@ end
44
52
  desc 'Install the necessary dependencies'
45
53
  task :setup do
46
54
  installed = Gem::SourceIndex.from_installed_gems
47
- dependencies = spec.dependencies
48
- dependencies.select { |dep|
49
- installed.find_name(dep.name, dep.version_requirements).empty? }.each do |dep|
55
+ ape_dependencies.select { |name, version|
56
+ installed.find_name(name.to_s, version).empty? }.each do |dep|
50
57
  puts "Installing #{dep} ..."
51
58
  install_gem dep.name, "-v '#{dep.version_requirements.to_s}'"
52
59
  end
@@ -4,10 +4,9 @@
4
4
  $:.unshift File.dirname(__FILE__) + '/../lib'
5
5
 
6
6
  require 'rubygems'
7
- require 'mongrel'
8
7
  require 'optparse'
9
- require 'ape/server'
10
- require 'ape/samples'
8
+
9
+ require File.dirname(__FILE__) + '/../sinatra/atom_exerciser'
11
10
 
12
11
  OPTIONS = {
13
12
  :host => '0.0.0.0',
@@ -25,4 +24,5 @@ parser = OptionParser.new do |opts|
25
24
  opts.parse!(ARGV)
26
25
  end
27
26
 
28
- Ape::Server.run(OPTIONS)
27
+ ::Ape.home = OPTIONS.delete(:home)
28
+ AtomExerciser.run!(OPTIONS)
@@ -4,8 +4,8 @@ module Ape
4
4
  require File.dirname(__FILE__) + '/util.rb'
5
5
  include Ape::Util
6
6
 
7
- attr_accessor :header, :footer, :debug, :dialogs, :diarefs, :dianum, :server
8
-
7
+ attr_accessor :header, :footer, :debug, :dialogs, :diarefs, :dianum, :server, :options
8
+
9
9
  def steps
10
10
  @steps ||= []
11
11
  end
@@ -13,8 +13,9 @@ module Ape
13
13
  def self.instance(key, opts = {})
14
14
  reporter = resolve_plugin(key, 'reporters', 'reporter')
15
15
  raise StandardError, "Unknown reporter: #{key}, outputs supported: #{supported_outputs}" unless reporter
16
- reporter.debug = opts[:debug] || false
17
- reporter.server = opts[:server] || false
16
+ reporter.debug = opts.delete(:debug) || false
17
+ reporter.server = opts.delete(:server) || false
18
+ reporter.options = opts
18
19
  reporter.dialogs = {}
19
20
  reporter.diarefs = {}
20
21
  reporter.dianum = 1
@@ -4,7 +4,7 @@ module Ape
4
4
 
5
5
  def static_dir
6
6
  dir = (server != true)?File.expand_path(File.dirname(__FILE__) + '/../../..') : ''
7
- dir += "/web"
7
+ dir += options[:static_path] || "/web"
8
8
  dir
9
9
  end
10
10
 
@@ -6,7 +6,7 @@ module Ape
6
6
 
7
7
  def validate(opts = {})
8
8
  init_service_document(opts[:uri])
9
- init_service_collections(opts[:uri])
9
+ init_service_collections(opts[:uri]) if @service_document
10
10
  end
11
11
 
12
12
  def init_service_document(uri)
@@ -51,4 +51,4 @@ module Ape
51
51
  end
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -1,7 +1,7 @@
1
1
  module Ape #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
- MINOR = 6
4
+ MINOR = 7
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -40,7 +40,10 @@
40
40
  -->
41
41
  <hr/>
42
42
  <p>The Ape source code may be found at
43
- <a href="http://rubyforge.org/projects/ape">ape.rubyforge.org</a>.
43
+ <a href="http://github.com/calavera/Ape">github.com/calavera/Ape</a>. You can install a local
44
+ Ape and run it just fine; see
45
+ <a href="http://thinkincode.net/2008/2/22/the-ape-meets-ruby-gems">The Ape meets
46
+ RubyGems</a>
44
47
 
45
48
  <hr/>
46
49
  <p>Ape Logo by <a href="http://www.urbanhonking.com/ideasfordozens">Greg
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ape
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Bray
@@ -11,27 +11,17 @@ bindir: bin
11
11
  cert_chain: []
12
12
 
13
13
  date: 2009-10-27 00:00:00 +01:00
14
- default_executable:
14
+ default_executable: ape_server
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: rake
17
+ name: sinatra
18
18
  type: :runtime
19
19
  version_requirement:
20
20
  version_requirements: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: "0.8"
25
- version:
26
- - !ruby/object:Gem::Dependency
27
- name: mongrel
28
- type: :runtime
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 1.1.3
24
+ version: 0.9.4
35
25
  version:
36
26
  - !ruby/object:Gem::Dependency
37
27
  name: erubis
@@ -43,19 +33,9 @@ dependencies:
43
33
  - !ruby/object:Gem::Version
44
34
  version: 2.5.0
45
35
  version:
46
- - !ruby/object:Gem::Dependency
47
- name: rubyforge
48
- type: :runtime
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: "0.4"
55
- version:
56
36
  - !ruby/object:Gem::Dependency
57
37
  name: mocha
58
- type: :runtime
38
+ type: :development
59
39
  version_requirement:
60
40
  version_requirements: !ruby/object:Gem::Requirement
61
41
  requirements:
@@ -72,80 +52,78 @@ executables:
72
52
  extensions: []
73
53
 
74
54
  extra_rdoc_files:
75
- - README
76
55
  - LICENSE
56
+ - README
77
57
  files:
78
- - lib/ape/server.rb
58
+ - LICENSE
59
+ - README
60
+ - Rakefile
61
+ - lib/ape.rb
62
+ - lib/ape/atomURI.rb
63
+ - lib/ape/auth/google_login_credentials.rb
64
+ - lib/ape/auth/wsse_credentials.rb
65
+ - lib/ape/authent.rb
66
+ - lib/ape/categories.rb
67
+ - lib/ape/coll_element.rb
79
68
  - lib/ape/collection.rb
80
- - lib/ape/print_writer.rb
81
- - lib/ape/samples.rb
69
+ - lib/ape/crumbs.rb
70
+ - lib/ape/entry.rb
71
+ - lib/ape/escaper.rb
72
+ - lib/ape/feed.rb
73
+ - lib/ape/html.rb
74
+ - lib/ape/invoker.rb
82
75
  - lib/ape/invokers/deleter.rb
83
76
  - lib/ape/invokers/getter.rb
84
77
  - lib/ape/invokers/poster.rb
85
78
  - lib/ape/invokers/putter.rb
79
+ - lib/ape/names.rb
80
+ - lib/ape/print_writer.rb
86
81
  - lib/ape/reporter.rb
87
- - lib/ape/escaper.rb
88
- - lib/ape/atomURI.rb
89
- - lib/ape/categories.rb
90
- - lib/ape/invoker.rb
91
- - lib/ape/validator_dsl.rb
92
- - lib/ape/version.rb
93
- - lib/ape/coll_element.rb
94
- - lib/ape/feed.rb
95
- - lib/ape/service.rb
96
- - lib/ape/auth/google_login_credentials.rb
97
- - lib/ape/auth/wsse_credentials.rb
98
- - lib/ape/authent.rb
99
- - lib/ape/entry.rb
100
- - lib/ape/handler.rb
101
- - lib/ape/reporters/html_template.eruby
102
- - lib/ape/reporters/html_reporter.rb
103
82
  - lib/ape/reporters/atom_reporter.rb
104
- - lib/ape/reporters/text_reporter.rb
105
83
  - lib/ape/reporters/atom_template.eruby
106
- - lib/ape/crumbs.rb
84
+ - lib/ape/reporters/html_reporter.rb
85
+ - lib/ape/reporters/html_template.eruby
86
+ - lib/ape/reporters/text_reporter.rb
87
+ - lib/ape/samples.rb
88
+ - lib/ape/service.rb
107
89
  - lib/ape/util.rb
108
- - lib/ape/names.rb
109
90
  - lib/ape/validator.rb
91
+ - lib/ape/validator_dsl.rb
110
92
  - lib/ape/validators/entry_posts_validator.rb
93
+ - lib/ape/validators/media_linkage_validator.rb
111
94
  - lib/ape/validators/media_posts_validator.rb
112
- - lib/ape/validators/service_document_validator.rb
113
95
  - lib/ape/validators/sanitization_validator.rb
114
- - lib/ape/validators/media_linkage_validator.rb
115
- - lib/ape/validators/sorting_validator.rb
116
96
  - lib/ape/validators/schema_validator.rb
117
- - lib/ape/html.rb
118
- - lib/ape.rb
119
- - samples/service_schema.txt
97
+ - lib/ape/validators/service_document_validator.rb
98
+ - lib/ape/validators/sorting_validator.rb
99
+ - lib/ape/version.rb
120
100
  - samples/atom_schema.txt
121
- - samples/unclean_xhtml_entry.eruby
122
101
  - samples/basic_entry.eruby
123
102
  - samples/categories_schema.txt
124
103
  - samples/mini_entry.eruby
104
+ - samples/service_schema.txt
105
+ - samples/unclean_xhtml_entry.eruby
125
106
  - test/test_helper.rb
126
- - test/unit/reporter_test.rb
127
- - test/unit/invoker_test.rb
128
107
  - test/unit/ape_test.rb
129
- - test/unit/samples_test.rb
130
- - test/unit/collection_test.rb
108
+ - test/unit/authent_test.rb
131
109
  - test/unit/coll_element_test.rb
132
- - test/unit/validators_test.rb
110
+ - test/unit/collection_test.rb
111
+ - test/unit/invoker_test.rb
112
+ - test/unit/reporter_test.rb
113
+ - test/unit/samples_test.rb
133
114
  - test/unit/service_test.rb
134
- - test/unit/authent_test.rb
115
+ - test/unit/validators_test.rb
135
116
  - web/ape.css
136
117
  - web/ape_logo.png
137
118
  - web/index.html
138
119
  - web/info.png
139
- - README
140
- - LICENSE
141
- - Rakefile
142
120
  has_rdoc: true
143
121
  homepage: http://ape.rubyforge.org
144
122
  licenses: []
145
123
 
146
124
  post_install_message:
147
- rdoc_options: []
148
-
125
+ rdoc_options:
126
+ - --charset=UTF-8
149
127
  require_paths:
150
128
  - lib
151
129
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -167,5 +145,14 @@ rubygems_version: 1.3.5
167
145
  signing_key:
168
146
  specification_version: 3
169
147
  summary: The Atom Protocol Exerciser
170
- test_files: []
171
-
148
+ test_files:
149
+ - test/test_helper.rb
150
+ - test/unit/reporter_test.rb
151
+ - test/unit/invoker_test.rb
152
+ - test/unit/ape_test.rb
153
+ - test/unit/samples_test.rb
154
+ - test/unit/collection_test.rb
155
+ - test/unit/coll_element_test.rb
156
+ - test/unit/validators_test.rb
157
+ - test/unit/service_test.rb
158
+ - test/unit/authent_test.rb
@@ -1,39 +0,0 @@
1
- require 'rubygems'
2
- require 'mongrel'
3
- require 'ape'
4
-
5
- module Ape
6
-
7
- # Implements the APE application handler for processing
8
- # and responding to requests. See process for more detail.
9
- class Handler < Mongrel::HttpHandler
10
-
11
- # Called by Mongrel with Mongrel::HttpRequest and
12
- # Mongrel::HttpResponse objects. Creates an Ape
13
- # instance for the request and responds with its report.
14
- def process(request, response)
15
- cgi = Mongrel::CGIWrapper.new(request, response)
16
-
17
- uri = cgi['uri'].strip
18
- user = cgi['username'].strip
19
- pass = cgi['password'].strip
20
-
21
- if uri.empty?
22
- response.start(200, true) do |header, body|
23
- header['Content-Type'] = 'text/plain'
24
- body << 'URI argument is required'
25
- end
26
- return
27
- end
28
-
29
- format = request.params['HTTP_ACCEPT'] == 'text/plain' ? 'text' : 'html'
30
- ape = Ape.new({ :crumbs => true, :output => format, :server => true })
31
- (user && pass) ? ape.check(uri, user, pass) : ape.check(uri)
32
-
33
- response.start(200, true) do |header, body|
34
- header['Content-Type'] = 'text/html'
35
- ape.report(body)
36
- end
37
- end
38
- end
39
- end
@@ -1,44 +0,0 @@
1
- require 'rubygems'
2
- require 'mongrel'
3
- require 'ape/handler'
4
- require 'ape/samples'
5
-
6
- module Ape
7
-
8
- # Manages and initializes the Mongrel handler. See run for more details.
9
- class Server
10
-
11
- # Starts the Mongrel handler with options given in +options+ and
12
- # maps the <b>/</b>, <b>/ape</b> and <b>/atompub/go</b> URIs to handlers.
13
- #
14
- # ==== Options
15
- # * :host - the IP address to bind to
16
- # * :port - the port number to listen on
17
- # * :directory - the ape home directory
18
- def self.run(options)
19
- ::Ape.home = options[:home]
20
-
21
- mongrel = Mongrel::Configurator.new(:host => options[:host], :port => options[:port]) do
22
- log "=> Booting mongrel"
23
- begin
24
- log "=> The ape starting on http://#{options[:host]}:#{options[:port]}"
25
- listener do
26
- redirect '/', '/web/index.html'
27
- uri '/web', :handler =>
28
- Mongrel::DirHandler.new(
29
- File.expand_path(File.dirname(__FILE__) + '/../../web'), true)
30
- uri '/atompub/go', :handler => Handler.new
31
- end
32
- rescue Errno::EADDRINUSE
33
- log "ERROR: Address (#{options[:host]}:#{options[:port]}) is already in use"
34
- exit 1
35
- end
36
- trap("INT") { stop }
37
- trap("TERM") { stop }
38
- log "=> Ctrl-C to shutdown"
39
- run
40
- end
41
- mongrel.join
42
- end
43
- end
44
- end