gopher2000 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,7 +4,6 @@ source "http://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem "rake"
7
- gem "logging"
8
7
 
9
8
  # Add dependencies to develop your gem here.
10
9
  # Include everything needed to run rake, tests, features, etc.
data/gopher2000.gemspec CHANGED
@@ -31,5 +31,5 @@ Gem::Specification.new do |s|
31
31
  s.add_development_dependency "eventmachine"
32
32
 
33
33
  s.add_runtime_dependency "eventmachine"
34
- s.add_runtime_dependency "logger"
34
+ s.add_runtime_dependency "logging"
35
35
  end
@@ -133,7 +133,7 @@ module Gopher
133
133
  # end
134
134
  #
135
135
  def route(path, &block)
136
- selector = sanitize_selector(path)
136
+ selector = Gopher::Application.sanitize_selector(path)
137
137
  sig = compile!(selector, &block)
138
138
 
139
139
  debug_log("Add route for #{selector}")
@@ -162,7 +162,7 @@ module Gopher
162
162
  #
163
163
  def lookup(selector)
164
164
  unless routes.nil?
165
- routes.each do |pattern, keys, block|
165
+ routes.each do |pattern, keys, block|
166
166
 
167
167
  if match = pattern.match(selector)
168
168
  match = match.to_a
@@ -428,19 +428,23 @@ module Gopher
428
428
  [/^#{pattern}$/, keys]
429
429
  end
430
430
 
431
- #
432
- # Sanitizes a gopher selector
433
- #
434
- def sanitize_selector(raw)
435
- raw.to_s.dup.
436
- strip. # Strip whitespace
437
- sub(/\/$/, ''). # Strip last rslash
438
- sub(/^\/*/, '/'). # Strip extra lslashes
439
- gsub(/\.+/, '.') # Don't want consecutive dots!
440
- end
441
431
 
442
432
  class << self
443
- #
433
+
434
+ #
435
+ # Sanitizes a gopher selector
436
+ #
437
+ def sanitize_selector(raw)
438
+ "/#{raw}".dup.
439
+ strip. # Strip whitespace
440
+ sub(/\/$/, ''). # Strip last rslash
441
+ sub(/^\/*/, '/'). # Strip extra lslashes
442
+ gsub(/\.+/, '.') # Don't want consecutive dots!
443
+
444
+ #raw = "/#{raw}" if ! raw.match(/^\//)
445
+ end
446
+
447
+ #
444
448
  # generate a method which we will use to run routes. this is
445
449
  # based on #generate_method as used by sinatra.
446
450
  # @see https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb
@@ -119,6 +119,12 @@ module Gopher
119
119
  underline(@width, under)
120
120
  end
121
121
 
122
+ def small_header(str, under = '=')
123
+ str = " " + str + " "
124
+ text(str)
125
+ underline(str.length, under)
126
+ end
127
+
122
128
  #
123
129
  # output a centered string in a box
124
130
  # @param [String] str the string to output
@@ -8,7 +8,9 @@ module Gopher
8
8
 
9
9
  def initialize(raw, ip_addr=nil)
10
10
  @selector, @input = raw.chomp.split("\t")
11
- @ip_address = ip_addr
11
+
12
+ @selector = Gopher::Application.sanitize_selector(@selector)
13
+ @ip_address = ip_addr
12
14
  end
13
15
 
14
16
  # confirm that this is actually a valid gopher request
@@ -1,4 +1,4 @@
1
1
  module Gopher
2
2
  # current version of the app
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
data/lib/gopher2000.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'eventmachine'
2
2
  require 'stringio'
3
-
3
+ require 'logging'
4
4
 
5
5
  #
6
6
  # Define everything needed to run a gopher server
data/spec/request_spec.rb CHANGED
@@ -3,13 +3,18 @@ require File.join(File.dirname(__FILE__), '/spec_helper')
3
3
  describe Gopher::Request do
4
4
  it 'should split raw request' do
5
5
  request = Gopher::Request.new("foo\tbar")
6
- request.selector.should == "foo"
6
+ request.selector.should == "/foo"
7
7
  request.input.should == "bar"
8
8
  end
9
9
 
10
- it "should be ok with just selector" do
10
+ it "normalizes by adding a slash to the front" do
11
11
  request = Gopher::Request.new("foo")
12
- request.selector.should == "foo"
12
+ request.selector.should == "/foo"
13
+ end
14
+
15
+ it "should be ok with just selector" do
16
+ request = Gopher::Request.new("/foo")
17
+ request.selector.should == "/foo"
13
18
  request.input.should == nil
14
19
  end
15
20
 
@@ -19,12 +24,12 @@ describe Gopher::Request do
19
24
  end
20
25
 
21
26
  it "valid? == true for valid selectors" do
22
- request = Gopher::Request.new("x" * 255, "bar")
27
+ request = Gopher::Request.new("x" * 254, "bar")
23
28
  request.valid?.should == true
24
29
  end
25
30
 
26
31
  it "valid? == false for invalid selectors" do
27
- request = Gopher::Request.new("x" * 256, "bar")
32
+ request = Gopher::Request.new("x" * 255, "bar")
28
33
  request.valid?.should == false
29
34
  end
30
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gopher2000
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000Z
12
+ date: 2012-05-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &12080320 !ruby/object:Gem::Requirement
16
+ requirement: &18116460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *12080320
24
+ version_requirements: *18116460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redcarpet
27
- requirement: &12079440 !ruby/object:Gem::Requirement
27
+ requirement: &18115520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *12079440
35
+ version_requirements: *18115520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yard
38
- requirement: &12078120 !ruby/object:Gem::Requirement
38
+ requirement: &18114820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *12078120
46
+ version_requirements: *18114820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: shoulda
49
- requirement: &12076940 !ruby/object:Gem::Requirement
49
+ requirement: &18113580 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *12076940
57
+ version_requirements: *18113580
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &12075000 !ruby/object:Gem::Requirement
60
+ requirement: &18093380 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *12075000
68
+ version_requirements: *18093380
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &12072800 !ruby/object:Gem::Requirement
71
+ requirement: &18092340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *12072800
79
+ version_requirements: *18092340
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: watchr
82
- requirement: &12046120 !ruby/object:Gem::Requirement
82
+ requirement: &18086720 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *12046120
90
+ version_requirements: *18086720
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: eventmachine
93
- requirement: &12044580 !ruby/object:Gem::Requirement
93
+ requirement: &18032500 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *12044580
101
+ version_requirements: *18032500
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: eventmachine
104
- requirement: &12043120 !ruby/object:Gem::Requirement
104
+ requirement: &18031440 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *12043120
112
+ version_requirements: *18031440
113
113
  - !ruby/object:Gem::Dependency
114
- name: logger
115
- requirement: &12041700 !ruby/object:Gem::Requirement
114
+ name: logging
115
+ requirement: &18029980 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *12041700
123
+ version_requirements: *18029980
124
124
  description: Gopher2000 is a ruby-based Gopher server. It is built for speedy, enjoyable
125
125
  development of all sorts of gopher sites.
126
126
  email:
@@ -191,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
191
  version: '0'
192
192
  segments:
193
193
  - 0
194
- hash: -1373198557486184416
194
+ hash: -579980991170337830
195
195
  required_rubygems_version: !ruby/object:Gem::Requirement
196
196
  none: false
197
197
  requirements:
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
200
  version: '0'
201
201
  segments:
202
202
  - 0
203
- hash: -1373198557486184416
203
+ hash: -579980991170337830
204
204
  requirements: []
205
205
  rubyforge_project: gopher2000
206
206
  rubygems_version: 1.8.17