serverside 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/CHANGELOG +22 -16
  2. data/Rakefile +11 -4
  3. data/bin/serverside +1 -1
  4. data/doc/rdoc/classes/Daemon.html +4 -4
  5. data/doc/rdoc/classes/ServerSide.html +10 -10
  6. data/doc/rdoc/classes/ServerSide/HTTP.html +5 -6
  7. data/doc/rdoc/classes/ServerSide/HTTP/Connection.html +24 -22
  8. data/doc/rdoc/classes/ServerSide/HTTP/Request.html +367 -121
  9. data/doc/rdoc/classes/ServerSide/Router.html +58 -58
  10. data/doc/rdoc/classes/ServerSide/StaticFiles.html +60 -49
  11. data/doc/rdoc/classes/ServerSide/StaticFiles/Const.html +12 -2
  12. data/doc/rdoc/classes/ServerSide/Template.html +12 -12
  13. data/doc/rdoc/created.rid +1 -1
  14. data/doc/rdoc/files/CHANGELOG.html +36 -31
  15. data/doc/rdoc/files/COPYING.html +1 -1
  16. data/doc/rdoc/files/README.html +1 -1
  17. data/doc/rdoc/files/lib/serverside/application_rb.html +1 -1
  18. data/doc/rdoc/files/lib/serverside/cluster_rb.html +1 -1
  19. data/doc/rdoc/files/lib/serverside/connection_rb.html +1 -1
  20. data/doc/rdoc/files/lib/serverside/core_ext_rb.html +1 -1
  21. data/doc/rdoc/files/lib/serverside/daemon_rb.html +1 -1
  22. data/doc/rdoc/files/lib/serverside/request_rb.html +8 -1
  23. data/doc/rdoc/files/lib/serverside/routing_rb.html +1 -1
  24. data/doc/rdoc/files/lib/serverside/server_rb.html +1 -1
  25. data/doc/rdoc/files/lib/serverside/static_rb.html +8 -1
  26. data/doc/rdoc/files/lib/serverside/template_rb.html +1 -1
  27. data/doc/rdoc/files/lib/serverside_rb.html +1 -1
  28. data/doc/rdoc/fr_class_index.html +0 -1
  29. data/doc/rdoc/fr_method_index.html +21 -20
  30. data/lib/serverside/connection.rb +6 -4
  31. data/lib/serverside/request.rb +101 -61
  32. data/lib/serverside/static.rb +22 -7
  33. data/test/functional/request_body_test.rb +93 -0
  34. data/test/functional/routing_server.rb +5 -5
  35. data/test/functional/routing_server_test.rb +3 -3
  36. data/test/spec/connection_spec.rb +61 -0
  37. data/test/spec/core_ext_spec.rb +20 -1
  38. data/test/unit/connection_test.rb +9 -9
  39. data/test/unit/request_test.rb +55 -55
  40. data/test/unit/server_test.rb +1 -1
  41. data/test/unit/static_test.rb +24 -25
  42. metadata +60 -60
  43. data/doc/rdoc/classes/ServerSide/HTTP/Const.html +0 -257
@@ -4,7 +4,7 @@ require 'net/http'
4
4
  class ServerTest < Test::Unit::TestCase
5
5
  class DummyRequest < ServerSide::HTTP::Request
6
6
  def respond
7
- @conn << "HTTP/1.1 200\r\nContent-Length: 9\r\n\r\nHi there!"
7
+ @socket << "HTTP/1.1 200\r\nContent-Length: 9\r\n\r\nHi there!"
8
8
  end
9
9
  end
10
10
 
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
  require 'stringio'
3
3
  require 'fileutils'
4
4
 
5
- class ConnectionTest < Test::Unit::TestCase
5
+ class StaticTest < Test::Unit::TestCase
6
6
  class Dummy < ServerSide::HTTP::Request
7
7
  def self.static_files
8
8
  @@static_files
@@ -12,7 +12,7 @@ class ConnectionTest < Test::Unit::TestCase
12
12
  @@mime_types
13
13
  end
14
14
 
15
- attr_accessor :conn, :path, :headers
15
+ attr_accessor :path, :socket, :headers
16
16
 
17
17
  def initialize
18
18
  @headers = {}
@@ -23,7 +23,7 @@ class ConnectionTest < Test::Unit::TestCase
23
23
  assert_kind_of Hash, Dummy.static_files
24
24
  Dummy.static_files.clear
25
25
  c = Dummy.new
26
- c.conn = StringIO.new
26
+ c.socket = StringIO.new
27
27
  assert_nil Dummy.static_files[__FILE__]
28
28
  c.serve_file(__FILE__)
29
29
  cache = Dummy.static_files[__FILE__]
@@ -50,10 +50,10 @@ class ConnectionTest < Test::Unit::TestCase
50
50
 
51
51
  def test_serve_file_normal
52
52
  c = Dummy.new
53
- c.conn = StringIO.new
53
+ c.socket = StringIO.new
54
54
  c.serve_file(__FILE__)
55
- c.conn.rewind
56
- resp = c.conn.read
55
+ c.socket.rewind
56
+ resp = c.socket.read
57
57
 
58
58
  assert_equal '200', /HTTP\/1.1\s(.*)\r\n/.match(resp)[1]
59
59
  fc = IO.read(__FILE__)
@@ -69,11 +69,11 @@ class ConnectionTest < Test::Unit::TestCase
69
69
 
70
70
  def test_serve_file_etags
71
71
  c = Dummy.new
72
- c.conn = StringIO.new
72
+ c.socket = StringIO.new
73
73
  Dummy.static_files.clear
74
74
  c.serve_file(__FILE__)
75
- c.conn.rewind
76
- resp = c.conn.read
75
+ c.socket.rewind
76
+ resp = c.socket.read
77
77
 
78
78
  # normal response
79
79
  assert_equal '200', /HTTP\/1.1\s(.*)\r\n/.match(resp)[1]
@@ -87,11 +87,11 @@ class ConnectionTest < Test::Unit::TestCase
87
87
  assert_equal stat.size.to_s,
88
88
  /Content-Length:\s(.*)\r\n/.match(resp)[1]
89
89
 
90
- c.conn = StringIO.new
90
+ c.socket = StringIO.new
91
91
  c.headers[ServerSide::StaticFiles::Const::IfNoneMatch] = etag
92
92
  c.serve_file(__FILE__)
93
- c.conn.rewind
94
- resp = c.conn.read
93
+ c.socket.rewind
94
+ resp = c.socket.read
95
95
 
96
96
  # not modified response
97
97
  assert_equal '304 Not Modified', /HTTP\/1.1\s(.*)\r\n/.match(resp)[1]
@@ -102,14 +102,13 @@ class ConnectionTest < Test::Unit::TestCase
102
102
  assert_equal etag, /ETag:\s(.*)\r\n/.match(resp)[1]
103
103
  assert_equal ServerSide::StaticFiles::Const::MaxAge,
104
104
  /Cache-Control:\s(.*)\r\n/.match(resp)[1]
105
- assert_equal '0', /Content-Length:\s(.*)\r\n/.match(resp)[1]
106
105
 
107
106
  FileUtils.touch(__FILE__)
108
- c.conn = StringIO.new
107
+ c.socket = StringIO.new
109
108
  c.headers[ServerSide::StaticFiles::Const::IfNoneMatch] = etag
110
109
  c.serve_file(__FILE__)
111
- c.conn.rewind
112
- resp = c.conn.read
110
+ c.socket.rewind
111
+ resp = c.socket.read
113
112
 
114
113
  # modified response
115
114
  assert_equal '200', /HTTP\/1.1\s(.*)\r\n/.match(resp)[1]
@@ -128,12 +127,12 @@ class ConnectionTest < Test::Unit::TestCase
128
127
  dir = File.dirname(__FILE__)
129
128
 
130
129
  c = Dummy.new
131
- c.conn = StringIO.new
130
+ c.socket = StringIO.new
132
131
  Dummy.static_files.clear
133
132
  c.path = dir
134
133
  c.serve_dir(dir)
135
- c.conn.rewind
136
- resp = c.conn.read
134
+ c.socket.rewind
135
+ resp = c.socket.read
137
136
 
138
137
  Dir.entries(dir).each do |fn|
139
138
  next if fn == '.'
@@ -145,21 +144,21 @@ class ConnectionTest < Test::Unit::TestCase
145
144
  dir = File.dirname(__FILE__)
146
145
 
147
146
  c = Dummy.new
148
- c.conn = StringIO.new
147
+ c.socket = StringIO.new
149
148
  c.path = dir
150
149
  c.serve_static(dir)
151
- c.conn.rewind
152
- resp = c.conn.read
150
+ c.socket.rewind
151
+ resp = c.socket.read
153
152
 
154
153
  Dir.entries(dir).each do |fn|
155
154
  next if fn == '.'
156
155
  assert_not_nil resp =~ /<a href="#{dir/fn}">(#{fn})<\/a>/
157
156
  end
158
157
 
159
- c.conn = StringIO.new
158
+ c.socket = StringIO.new
160
159
  c.serve_file(__FILE__)
161
- c.conn.rewind
162
- resp = c.conn.read
160
+ c.socket.rewind
161
+ resp = c.socket.read
163
162
 
164
163
  # normal response
165
164
  assert_equal '200', /HTTP\/1.1\s(.*)\r\n/.match(resp)[1]
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: serverside
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.6
7
- date: 2006-09-30 00:00:00 +03:00
6
+ version: 0.2.7
7
+ date: 2006-10-11 00:00:00 +02:00
8
8
  summary: Performance-oriented web framework.
9
9
  require_paths:
10
10
  - lib
@@ -25,7 +25,6 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
25
  platform: ruby
26
26
  signing_key:
27
27
  cert_chain:
28
- post_install_message:
29
28
  authors:
30
29
  - Sharon Rosner
31
30
  files:
@@ -34,87 +33,88 @@ files:
34
33
  - Rakefile
35
34
  - bin/serverside
36
35
  - doc/rdoc
37
- - doc/rdoc/classes
38
36
  - doc/rdoc/created.rid
37
+ - doc/rdoc/rdoc-style.css
39
38
  - doc/rdoc/files
40
- - doc/rdoc/fr_class_index.html
39
+ - doc/rdoc/classes
41
40
  - doc/rdoc/fr_file_index.html
41
+ - doc/rdoc/fr_class_index.html
42
42
  - doc/rdoc/fr_method_index.html
43
43
  - doc/rdoc/index.html
44
- - doc/rdoc/rdoc-style.css
45
- - doc/rdoc/classes/Daemon
46
- - doc/rdoc/classes/Daemon.html
47
- - doc/rdoc/classes/Object.html
44
+ - doc/rdoc/files/README.html
45
+ - doc/rdoc/files/CHANGELOG.html
46
+ - doc/rdoc/files/COPYING.html
47
+ - doc/rdoc/files/lib
48
+ - doc/rdoc/files/lib/serverside_rb.html
49
+ - doc/rdoc/files/lib/serverside
50
+ - doc/rdoc/files/lib/serverside/server_rb.html
51
+ - doc/rdoc/files/lib/serverside/daemon_rb.html
52
+ - doc/rdoc/files/lib/serverside/application_rb.html
53
+ - doc/rdoc/files/lib/serverside/core_ext_rb.html
54
+ - doc/rdoc/files/lib/serverside/connection_rb.html
55
+ - doc/rdoc/files/lib/serverside/cluster_rb.html
56
+ - doc/rdoc/files/lib/serverside/static_rb.html
57
+ - doc/rdoc/files/lib/serverside/routing_rb.html
58
+ - doc/rdoc/files/lib/serverside/template_rb.html
59
+ - doc/rdoc/files/lib/serverside/request_rb.html
60
+ - doc/rdoc/classes/Symbol.html
48
61
  - doc/rdoc/classes/Proc.html
49
- - doc/rdoc/classes/ServerSide
50
- - doc/rdoc/classes/ServerSide.html
62
+ - doc/rdoc/classes/Object.html
51
63
  - doc/rdoc/classes/String.html
52
- - doc/rdoc/classes/Symbol.html
64
+ - doc/rdoc/classes/Daemon.html
65
+ - doc/rdoc/classes/Daemon
66
+ - doc/rdoc/classes/ServerSide.html
67
+ - doc/rdoc/classes/ServerSide
68
+ - doc/rdoc/classes/Daemon/PidFile.html
53
69
  - doc/rdoc/classes/Daemon/Base.html
54
- - doc/rdoc/classes/Daemon/Cluster
55
70
  - doc/rdoc/classes/Daemon/Cluster.html
56
- - doc/rdoc/classes/Daemon/PidFile.html
71
+ - doc/rdoc/classes/Daemon/Cluster
57
72
  - doc/rdoc/classes/Daemon/Cluster/PidFile.html
73
+ - doc/rdoc/classes/ServerSide/StaticFiles.html
74
+ - doc/rdoc/classes/ServerSide/StaticFiles
58
75
  - doc/rdoc/classes/ServerSide/Application.html
59
- - doc/rdoc/classes/ServerSide/HTTP
60
76
  - doc/rdoc/classes/ServerSide/HTTP.html
61
- - doc/rdoc/classes/ServerSide/Router.html
62
- - doc/rdoc/classes/ServerSide/StaticFiles
63
- - doc/rdoc/classes/ServerSide/StaticFiles.html
77
+ - doc/rdoc/classes/ServerSide/HTTP
64
78
  - doc/rdoc/classes/ServerSide/Template.html
65
- - doc/rdoc/classes/ServerSide/HTTP/Connection.html
66
- - doc/rdoc/classes/ServerSide/HTTP/Const.html
67
- - doc/rdoc/classes/ServerSide/HTTP/Request.html
68
- - doc/rdoc/classes/ServerSide/HTTP/Server.html
79
+ - doc/rdoc/classes/ServerSide/Router.html
69
80
  - doc/rdoc/classes/ServerSide/StaticFiles/Const.html
70
- - doc/rdoc/files/CHANGELOG.html
71
- - doc/rdoc/files/COPYING.html
72
- - doc/rdoc/files/lib
73
- - doc/rdoc/files/README.html
74
- - doc/rdoc/files/lib/serverside
75
- - doc/rdoc/files/lib/serverside_rb.html
76
- - doc/rdoc/files/lib/serverside/application_rb.html
77
- - doc/rdoc/files/lib/serverside/cluster_rb.html
78
- - doc/rdoc/files/lib/serverside/connection_rb.html
79
- - doc/rdoc/files/lib/serverside/core_ext_rb.html
80
- - doc/rdoc/files/lib/serverside/daemon_rb.html
81
- - doc/rdoc/files/lib/serverside/request_rb.html
82
- - doc/rdoc/files/lib/serverside/routing_rb.html
83
- - doc/rdoc/files/lib/serverside/server_rb.html
84
- - doc/rdoc/files/lib/serverside/static_rb.html
85
- - doc/rdoc/files/lib/serverside/template_rb.html
81
+ - doc/rdoc/classes/ServerSide/HTTP/Server.html
82
+ - doc/rdoc/classes/ServerSide/HTTP/Request.html
83
+ - doc/rdoc/classes/ServerSide/HTTP/Connection.html
84
+ - test/unit
85
+ - test/test_helper.rb
86
86
  - test/functional
87
87
  - test/spec
88
- - test/test_helper.rb
89
- - test/unit
90
- - test/functional/primitive_static_server_test.rb
91
- - test/functional/routing_server.rb
92
- - test/functional/routing_server_test.rb
93
- - test/functional/static_profile.rb
94
- - test/functional/static_rfuzz.rb
95
- - test/functional/static_server_test.rb
96
- - test/spec/core_ext_spec.rb
97
- - test/unit/cluster_test.rb
98
- - test/unit/connection_test.rb
99
- - test/unit/core_ext_test.rb
100
88
  - test/unit/daemon_test.rb
101
- - test/unit/request_test.rb
102
- - test/unit/routing_test.rb
103
89
  - test/unit/server_test.rb
90
+ - test/unit/core_ext_test.rb
91
+ - test/unit/connection_test.rb
92
+ - test/unit/cluster_test.rb
104
93
  - test/unit/static_test.rb
94
+ - test/unit/routing_test.rb
105
95
  - test/unit/template_test.rb
106
- - lib/serverside
96
+ - test/unit/request_test.rb
97
+ - test/functional/primitive_static_server_test.rb
98
+ - test/functional/static_server_test.rb
99
+ - test/functional/static_profile.rb
100
+ - test/functional/static_rfuzz.rb
101
+ - test/functional/routing_server.rb
102
+ - test/functional/routing_server_test.rb
103
+ - test/functional/request_body_test.rb
104
+ - test/spec/core_ext_spec.rb
105
+ - test/spec/connection_spec.rb
107
106
  - lib/serverside.rb
107
+ - lib/serverside
108
+ - lib/serverside/server.rb
109
+ - lib/serverside/daemon.rb
108
110
  - lib/serverside/application.rb
109
- - lib/serverside/cluster.rb
110
- - lib/serverside/connection.rb
111
111
  - lib/serverside/core_ext.rb
112
- - lib/serverside/daemon.rb
113
- - lib/serverside/request.rb
114
- - lib/serverside/routing.rb
115
- - lib/serverside/server.rb
112
+ - lib/serverside/connection.rb
113
+ - lib/serverside/cluster.rb
116
114
  - lib/serverside/static.rb
115
+ - lib/serverside/routing.rb
117
116
  - lib/serverside/template.rb
117
+ - lib/serverside/request.rb
118
118
  - CHANGELOG
119
119
  test_files: []
120
120
 
@@ -1,257 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: ServerSide::HTTP::Const</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">ServerSide::HTTP::Const</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../../files/lib/serverside/request_rb.html">
59
- lib/serverside/request.rb
60
- </a>
61
- <br />
62
- </td>
63
- </tr>
64
-
65
- </table>
66
- </div>
67
- <!-- banner header -->
68
-
69
- <div id="bodyContent">
70
-
71
-
72
-
73
- <div id="contextContent">
74
-
75
- <div id="description">
76
- <p>
77
- A bunch of frozen constants to make the parsing of requests and rendering
78
- of responses faster than otherwise.
79
- </p>
80
-
81
- </div>
82
-
83
-
84
- </div>
85
-
86
-
87
- </div>
88
-
89
-
90
- <!-- if includes -->
91
-
92
- <div id="section">
93
-
94
-
95
- <div id="constants-list">
96
- <h3 class="section-bar">Constants</h3>
97
-
98
- <div class="name-list">
99
- <table summary="Constants">
100
- <tr class="top-aligned-row context-row">
101
- <td class="context-item-name">LineBreak</td>
102
- <td>=</td>
103
- <td class="context-item-value">&quot;\r\n&quot;.freeze</td>
104
- </tr>
105
- <tr class="top-aligned-row context-row">
106
- <td class="context-item-name">RequestRegexp</td>
107
- <td>=</td>
108
- <td class="context-item-value">/([A-Za-z0-9]+)\s(\/[^\/\?]*(?:\/[^\/\?]+)*)\/?(?:\?(.*))?\sHTTP\/(.+)\r/.freeze</td>
109
- <td width="3em">&nbsp;</td>
110
- <td class="context-item-desc">
111
- Here&#8217;s a nice one - parses the first line of a request. The expected
112
- format is as follows: &lt;method&gt; &lt;/path&gt;[/][?&lt;query&gt;] <a
113
- href="../HTTP.html">HTTP</a>/&lt;version&gt;
114
-
115
- </td>
116
- </tr>
117
- <tr class="top-aligned-row context-row">
118
- <td class="context-item-name">HeaderRegexp</td>
119
- <td>=</td>
120
- <td class="context-item-value">/([^:]+):\s?(.*)\r\n/.freeze</td>
121
- <td width="3em">&nbsp;</td>
122
- <td class="context-item-desc">
123
- Regexp for parsing headers.
124
-
125
- </td>
126
- </tr>
127
- <tr class="top-aligned-row context-row">
128
- <td class="context-item-name">ContentLength</td>
129
- <td>=</td>
130
- <td class="context-item-value">'Content-Length'.freeze</td>
131
- </tr>
132
- <tr class="top-aligned-row context-row">
133
- <td class="context-item-name">Version_1_1</td>
134
- <td>=</td>
135
- <td class="context-item-value">'1.1'.freeze</td>
136
- </tr>
137
- <tr class="top-aligned-row context-row">
138
- <td class="context-item-name">Connection</td>
139
- <td>=</td>
140
- <td class="context-item-value">'Connection'.freeze</td>
141
- </tr>
142
- <tr class="top-aligned-row context-row">
143
- <td class="context-item-name">Close</td>
144
- <td>=</td>
145
- <td class="context-item-value">'close'.freeze</td>
146
- </tr>
147
- <tr class="top-aligned-row context-row">
148
- <td class="context-item-name">Ampersand</td>
149
- <td>=</td>
150
- <td class="context-item-value">'&amp;'.freeze</td>
151
- </tr>
152
- <tr class="top-aligned-row context-row">
153
- <td class="context-item-name">ParameterRegexp</td>
154
- <td>=</td>
155
- <td class="context-item-value">/(.+)=(.*)/.freeze</td>
156
- <td width="3em">&nbsp;</td>
157
- <td class="context-item-desc">
158
- Regexp for parsing URI parameters.
159
-
160
- </td>
161
- </tr>
162
- <tr class="top-aligned-row context-row">
163
- <td class="context-item-name">EqualSign</td>
164
- <td>=</td>
165
- <td class="context-item-value">'='.freeze</td>
166
- </tr>
167
- <tr class="top-aligned-row context-row">
168
- <td class="context-item-name">StatusClose</td>
169
- <td>=</td>
170
- <td class="context-item-value">&quot;HTTP/1.1 %d\r\nConnection: close\r\nContent-Type: %s\r\n%s%sContent-Length: %d\r\n\r\n&quot;.freeze</td>
171
- </tr>
172
- <tr class="top-aligned-row context-row">
173
- <td class="context-item-name">StatusStream</td>
174
- <td>=</td>
175
- <td class="context-item-value">&quot;HTTP/1.1 %d\r\nConnection: close\r\nContent-Type: %s\r\n%s%s\r\n&quot;.freeze</td>
176
- </tr>
177
- <tr class="top-aligned-row context-row">
178
- <td class="context-item-name">StatusPersist</td>
179
- <td>=</td>
180
- <td class="context-item-value">&quot;HTTP/1.1 %d\r\nContent-Type: %s\r\n%s%sContent-Length: %d\r\n\r\n&quot;.freeze</td>
181
- </tr>
182
- <tr class="top-aligned-row context-row">
183
- <td class="context-item-name">StatusRedirect</td>
184
- <td>=</td>
185
- <td class="context-item-value">&quot;HTTP/1.1 %d\r\nConnection: close\r\nLocation: %s\r\n\r\n&quot;.freeze</td>
186
- </tr>
187
- <tr class="top-aligned-row context-row">
188
- <td class="context-item-name">Header</td>
189
- <td>=</td>
190
- <td class="context-item-value">&quot;%s: %s\r\n&quot;.freeze</td>
191
- </tr>
192
- <tr class="top-aligned-row context-row">
193
- <td class="context-item-name">EmptyString</td>
194
- <td>=</td>
195
- <td class="context-item-value">''.freeze</td>
196
- </tr>
197
- <tr class="top-aligned-row context-row">
198
- <td class="context-item-name">EmptyHash</td>
199
- <td>=</td>
200
- <td class="context-item-value">{}.freeze</td>
201
- </tr>
202
- <tr class="top-aligned-row context-row">
203
- <td class="context-item-name">Slash</td>
204
- <td>=</td>
205
- <td class="context-item-value">'/'.freeze</td>
206
- </tr>
207
- <tr class="top-aligned-row context-row">
208
- <td class="context-item-name">Location</td>
209
- <td>=</td>
210
- <td class="context-item-value">'Location'.freeze</td>
211
- </tr>
212
- <tr class="top-aligned-row context-row">
213
- <td class="context-item-name">Cookie</td>
214
- <td>=</td>
215
- <td class="context-item-value">'Cookie'</td>
216
- </tr>
217
- <tr class="top-aligned-row context-row">
218
- <td class="context-item-name">SetCookie</td>
219
- <td>=</td>
220
- <td class="context-item-value">&quot;Set-Cookie: %s=%s; path=/; expires=%s\r\n&quot;.freeze</td>
221
- </tr>
222
- <tr class="top-aligned-row context-row">
223
- <td class="context-item-name">CookieSplit</td>
224
- <td>=</td>
225
- <td class="context-item-value">/[;,] */n.freeze</td>
226
- </tr>
227
- <tr class="top-aligned-row context-row">
228
- <td class="context-item-name">CookieRegexp</td>
229
- <td>=</td>
230
- <td class="context-item-value">/\s*(.+)=(.*)\s*/.freeze</td>
231
- </tr>
232
- <tr class="top-aligned-row context-row">
233
- <td class="context-item-name">CookieExpiredTime</td>
234
- <td>=</td>
235
- <td class="context-item-value">Time.at(0).freeze</td>
236
- </tr>
237
- </table>
238
- </div>
239
- </div>
240
-
241
-
242
-
243
-
244
-
245
-
246
- <!-- if method_list -->
247
-
248
-
249
- </div>
250
-
251
-
252
- <div id="validator-badges">
253
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
254
- </div>
255
-
256
- </body>
257
- </html>