ruby-lsp 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -0
- data/.rubocop.yml +16 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +8 -5
- data/Gemfile.lock +55 -10
- data/README.md +40 -0
- data/VERSION +1 -1
- data/bin/tapioca +29 -0
- data/dev.yml +3 -0
- data/exe/ruby-lsp +19 -4
- data/lib/internal.rb +7 -0
- data/lib/ruby-lsp.rb +1 -0
- data/lib/ruby_lsp/cli.rb +12 -5
- data/lib/ruby_lsp/document.rb +37 -14
- data/lib/ruby_lsp/handler.rb +78 -23
- data/lib/ruby_lsp/requests/base_request.rb +11 -0
- data/lib/ruby_lsp/requests/code_actions.rb +1 -0
- data/lib/ruby_lsp/requests/diagnostics.rb +1 -0
- data/lib/ruby_lsp/requests/document_highlight.rb +96 -0
- data/lib/ruby_lsp/requests/document_symbol.rb +1 -10
- data/lib/ruby_lsp/requests/folding_ranges.rb +3 -2
- data/lib/ruby_lsp/requests/formatting.rb +2 -1
- data/lib/ruby_lsp/requests/rubocop_request.rb +1 -0
- data/lib/ruby_lsp/requests/selection_ranges.rb +1 -0
- data/lib/ruby_lsp/requests/semantic_highlighting.rb +17 -3
- data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +1 -0
- data/lib/ruby_lsp/requests/support/selection_range.rb +1 -0
- data/lib/ruby_lsp/requests/support/semantic_token_encoder.rb +12 -1
- data/lib/ruby_lsp/requests/support/syntax_error_diagnostic.rb +1 -0
- data/lib/ruby_lsp/requests.rb +2 -0
- data/lib/ruby_lsp/store.rb +19 -3
- data/rakelib/check_docs.rake +4 -1
- data/ruby-lsp.gemspec +1 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/.rubocop.yml +8 -0
- data/sorbet/rbi/gems/ansi@1.5.0.rbi +338 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +522 -0
- data/sorbet/rbi/gems/builder@3.2.4.rbi +418 -0
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
- data/sorbet/rbi/gems/debug@1.5.0.rbi +1273 -0
- data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +867 -0
- data/sorbet/rbi/gems/io-console@0.5.11.rbi +8 -0
- data/sorbet/rbi/gems/irb@1.4.1.rbi +376 -0
- data/sorbet/rbi/gems/language_server-protocol@3.16.0.3.rbi +7325 -0
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
- data/sorbet/rbi/gems/minitest-reporters@1.5.0.rbi +612 -0
- data/sorbet/rbi/gems/minitest@5.15.0.rbi +994 -0
- data/sorbet/rbi/gems/parallel@1.22.1.rbi +163 -0
- data/sorbet/rbi/gems/parser@3.1.2.0.rbi +3968 -0
- data/sorbet/rbi/gems/prettier_print@0.1.0.rbi +734 -0
- data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +227 -0
- data/sorbet/rbi/gems/rake@13.0.6.rbi +1853 -0
- data/sorbet/rbi/gems/rbi@0.0.14.rbi +2337 -0
- data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +1854 -0
- data/sorbet/rbi/gems/reline@0.3.1.rbi +1274 -0
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +3852 -0
- data/sorbet/rbi/gems/rubocop-ast@1.18.0.rbi +4180 -0
- data/sorbet/rbi/gems/rubocop-minitest@0.20.0.rbi +1369 -0
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +246 -0
- data/sorbet/rbi/gems/rubocop-shopify@2.6.0.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-sorbet@0.6.8.rbi +652 -0
- data/sorbet/rbi/gems/rubocop@1.30.0.rbi +36729 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +732 -0
- data/sorbet/rbi/gems/spoom@1.1.11.rbi +1600 -0
- data/sorbet/rbi/gems/syntax_tree@2.7.1.rbi +6777 -0
- data/sorbet/rbi/gems/tapioca@0.8.1.rbi +1972 -0
- data/sorbet/rbi/gems/thor@1.2.1.rbi +2921 -0
- data/sorbet/rbi/gems/unicode-display_width@2.1.0.rbi +27 -0
- data/sorbet/rbi/gems/unparser@0.6.5.rbi +2789 -0
- data/sorbet/rbi/gems/webrick@1.7.0.rbi +1779 -0
- data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +289 -0
- data/sorbet/rbi/gems/yard@0.9.27.rbi +13048 -0
- data/sorbet/rbi/shims/fiddle.rbi +4 -0
- data/sorbet/rbi/shims/hash.rbi +6 -0
- data/sorbet/rbi/shims/rdoc.rbi +4 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +7 -0
- metadata +64 -2
@@ -0,0 +1,1779 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `webrick` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem webrick`.
|
6
|
+
|
7
|
+
# AccessLog provides logging to various files in various formats.
|
8
|
+
#
|
9
|
+
# Multiple logs may be written to at the same time:
|
10
|
+
#
|
11
|
+
# access_log = [
|
12
|
+
# [$stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT],
|
13
|
+
# [$stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT],
|
14
|
+
# ]
|
15
|
+
#
|
16
|
+
# server = WEBrick::HTTPServer.new :AccessLog => access_log
|
17
|
+
#
|
18
|
+
# Custom log formats may be defined. WEBrick::AccessLog provides a subset
|
19
|
+
# of the formatting from Apache's mod_log_config
|
20
|
+
# http://httpd.apache.org/docs/mod/mod_log_config.html#formats. See
|
21
|
+
# AccessLog::setup_params for a list of supported options
|
22
|
+
module WEBrick::AccessLog
|
23
|
+
private
|
24
|
+
|
25
|
+
# Escapes control characters in +data+
|
26
|
+
def escape(data); end
|
27
|
+
|
28
|
+
# Formats +params+ according to +format_string+ which is described in
|
29
|
+
# setup_params.
|
30
|
+
def format(format_string, params); end
|
31
|
+
|
32
|
+
# This format specification is a subset of mod_log_config of Apache:
|
33
|
+
#
|
34
|
+
# %a:: Remote IP address
|
35
|
+
# %b:: Total response size
|
36
|
+
# %e{variable}:: Given variable in ENV
|
37
|
+
# %f:: Response filename
|
38
|
+
# %h:: Remote host name
|
39
|
+
# %{header}i:: Given request header
|
40
|
+
# %l:: Remote logname, always "-"
|
41
|
+
# %m:: Request method
|
42
|
+
# %{attr}n:: Given request attribute from <tt>req.attributes</tt>
|
43
|
+
# %{header}o:: Given response header
|
44
|
+
# %p:: Server's request port
|
45
|
+
# %{format}p:: The canonical port of the server serving the request or the
|
46
|
+
# actual port or the client's actual port. Valid formats are
|
47
|
+
# canonical, local or remote.
|
48
|
+
# %q:: Request query string
|
49
|
+
# %r:: First line of the request
|
50
|
+
# %s:: Request status
|
51
|
+
# %t:: Time the request was received
|
52
|
+
# %T:: Time taken to process the request
|
53
|
+
# %u:: Remote user from auth
|
54
|
+
# %U:: Unparsed URI
|
55
|
+
# %%:: Literal %
|
56
|
+
def setup_params(config, req, res); end
|
57
|
+
|
58
|
+
class << self
|
59
|
+
# Escapes control characters in +data+
|
60
|
+
def escape(data); end
|
61
|
+
|
62
|
+
# Formats +params+ according to +format_string+ which is described in
|
63
|
+
# setup_params.
|
64
|
+
def format(format_string, params); end
|
65
|
+
|
66
|
+
# This format specification is a subset of mod_log_config of Apache:
|
67
|
+
#
|
68
|
+
# %a:: Remote IP address
|
69
|
+
# %b:: Total response size
|
70
|
+
# %e{variable}:: Given variable in ENV
|
71
|
+
# %f:: Response filename
|
72
|
+
# %h:: Remote host name
|
73
|
+
# %{header}i:: Given request header
|
74
|
+
# %l:: Remote logname, always "-"
|
75
|
+
# %m:: Request method
|
76
|
+
# %{attr}n:: Given request attribute from <tt>req.attributes</tt>
|
77
|
+
# %{header}o:: Given response header
|
78
|
+
# %p:: Server's request port
|
79
|
+
# %{format}p:: The canonical port of the server serving the request or the
|
80
|
+
# actual port or the client's actual port. Valid formats are
|
81
|
+
# canonical, local or remote.
|
82
|
+
# %q:: Request query string
|
83
|
+
# %r:: First line of the request
|
84
|
+
# %s:: Request status
|
85
|
+
# %t:: Time the request was received
|
86
|
+
# %T:: Time taken to process the request
|
87
|
+
# %u:: Remote user from auth
|
88
|
+
# %U:: Unparsed URI
|
89
|
+
# %%:: Literal %
|
90
|
+
def setup_params(config, req, res); end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# A generic logging class
|
95
|
+
class WEBrick::BasicLog
|
96
|
+
# Initializes a new logger for +log_file+ that outputs messages at +level+
|
97
|
+
# or higher. +log_file+ can be a filename, an IO-like object that
|
98
|
+
# responds to #<< or nil which outputs to $stderr.
|
99
|
+
#
|
100
|
+
# If no level is given INFO is chosen by default
|
101
|
+
#
|
102
|
+
# @return [BasicLog] a new instance of BasicLog
|
103
|
+
def initialize(log_file = T.unsafe(nil), level = T.unsafe(nil)); end
|
104
|
+
|
105
|
+
# Synonym for log(INFO, obj.to_s)
|
106
|
+
def <<(obj); end
|
107
|
+
|
108
|
+
# Closes the logger (also closes the log device associated to the logger)
|
109
|
+
def close; end
|
110
|
+
|
111
|
+
# Shortcut for logging a DEBUG message
|
112
|
+
def debug(msg); end
|
113
|
+
|
114
|
+
# Will the logger output DEBUG messages?
|
115
|
+
#
|
116
|
+
# @return [Boolean]
|
117
|
+
def debug?; end
|
118
|
+
|
119
|
+
# Shortcut for logging an ERROR message
|
120
|
+
def error(msg); end
|
121
|
+
|
122
|
+
# Will the logger output ERROR messages?
|
123
|
+
#
|
124
|
+
# @return [Boolean]
|
125
|
+
def error?; end
|
126
|
+
|
127
|
+
# Shortcut for logging a FATAL message
|
128
|
+
def fatal(msg); end
|
129
|
+
|
130
|
+
# Will the logger output FATAL messages?
|
131
|
+
#
|
132
|
+
# @return [Boolean]
|
133
|
+
def fatal?; end
|
134
|
+
|
135
|
+
# Shortcut for logging an INFO message
|
136
|
+
def info(msg); end
|
137
|
+
|
138
|
+
# Will the logger output INFO messages?
|
139
|
+
#
|
140
|
+
# @return [Boolean]
|
141
|
+
def info?; end
|
142
|
+
|
143
|
+
# log-level, messages above this level will be logged
|
144
|
+
def level; end
|
145
|
+
|
146
|
+
# log-level, messages above this level will be logged
|
147
|
+
def level=(_arg0); end
|
148
|
+
|
149
|
+
# Logs +data+ at +level+ if the given level is above the current log
|
150
|
+
# level.
|
151
|
+
def log(level, data); end
|
152
|
+
|
153
|
+
# Shortcut for logging a WARN message
|
154
|
+
def warn(msg); end
|
155
|
+
|
156
|
+
# Will the logger output WARN messages?
|
157
|
+
#
|
158
|
+
# @return [Boolean]
|
159
|
+
def warn?; end
|
160
|
+
|
161
|
+
private
|
162
|
+
|
163
|
+
# Formats +arg+ for the logger
|
164
|
+
#
|
165
|
+
# * If +arg+ is an Exception, it will format the error message and
|
166
|
+
# the back trace.
|
167
|
+
# * If +arg+ responds to #to_str, it will return it.
|
168
|
+
# * Otherwise it will return +arg+.inspect.
|
169
|
+
def format(arg); end
|
170
|
+
end
|
171
|
+
|
172
|
+
# --
|
173
|
+
# Updates WEBrick::GenericServer with SSL functionality
|
174
|
+
class WEBrick::GenericServer
|
175
|
+
# Creates a new generic server from +config+. The default configuration
|
176
|
+
# comes from +default+.
|
177
|
+
#
|
178
|
+
# @return [GenericServer] a new instance of GenericServer
|
179
|
+
def initialize(config = T.unsafe(nil), default = T.unsafe(nil)); end
|
180
|
+
|
181
|
+
# Retrieves +key+ from the configuration
|
182
|
+
def [](key); end
|
183
|
+
|
184
|
+
# The server configuration
|
185
|
+
def config; end
|
186
|
+
|
187
|
+
# Updates +listen+ to enable SSL when the SSL configuration is active.
|
188
|
+
def listen(address, port); end
|
189
|
+
|
190
|
+
# Sockets listening for connections.
|
191
|
+
def listeners; end
|
192
|
+
|
193
|
+
# The server logger. This is independent from the HTTP access log.
|
194
|
+
def logger; end
|
195
|
+
|
196
|
+
# You must subclass GenericServer and implement \#run which accepts a TCP
|
197
|
+
# client socket
|
198
|
+
def run(sock); end
|
199
|
+
|
200
|
+
# Shuts down the server and all listening sockets. New listeners must be
|
201
|
+
# provided to restart the server.
|
202
|
+
def shutdown; end
|
203
|
+
|
204
|
+
# Starts the server and runs the +block+ for each connection. This method
|
205
|
+
# does not return until the server is stopped from a signal handler or
|
206
|
+
# another thread using #stop or #shutdown.
|
207
|
+
#
|
208
|
+
# If the block raises a subclass of StandardError the exception is logged
|
209
|
+
# and ignored. If an IOError or Errno::EBADF exception is raised the
|
210
|
+
# exception is ignored. If an Exception subclass is raised the exception
|
211
|
+
# is logged and re-raised which stops the server.
|
212
|
+
#
|
213
|
+
# To completely shut down a server call #shutdown from ensure:
|
214
|
+
#
|
215
|
+
# server = WEBrick::GenericServer.new
|
216
|
+
# # or WEBrick::HTTPServer.new
|
217
|
+
#
|
218
|
+
# begin
|
219
|
+
# server.start
|
220
|
+
# ensure
|
221
|
+
# server.shutdown
|
222
|
+
# end
|
223
|
+
#
|
224
|
+
# @raise [ServerError]
|
225
|
+
def start(&block); end
|
226
|
+
|
227
|
+
# The server status. One of :Stop, :Running or :Shutdown
|
228
|
+
def status; end
|
229
|
+
|
230
|
+
# Stops the server from accepting new connections.
|
231
|
+
def stop; end
|
232
|
+
|
233
|
+
# Tokens control the number of outstanding clients. The
|
234
|
+
# <code>:MaxClients</code> configuration sets this.
|
235
|
+
def tokens; end
|
236
|
+
|
237
|
+
private
|
238
|
+
|
239
|
+
# Accepts a TCP client socket from the TCP server socket +svr+ and returns
|
240
|
+
# the client socket.
|
241
|
+
def accept_client(svr); end
|
242
|
+
|
243
|
+
def alarm_shutdown_pipe; end
|
244
|
+
|
245
|
+
# Calls the callback +callback_name+ from the configuration with +args+
|
246
|
+
def call_callback(callback_name, *args); end
|
247
|
+
|
248
|
+
def cleanup_listener; end
|
249
|
+
def cleanup_shutdown_pipe(shutdown_pipe); end
|
250
|
+
def setup_shutdown_pipe; end
|
251
|
+
|
252
|
+
# Starts a server thread for the client socket +sock+ that runs the given
|
253
|
+
# +block+.
|
254
|
+
#
|
255
|
+
# Sets the socket to the <code>:WEBrickSocket</code> thread local variable
|
256
|
+
# in the thread.
|
257
|
+
#
|
258
|
+
# If any errors occur in the block they are logged and handled.
|
259
|
+
def start_thread(sock, &block); end
|
260
|
+
end
|
261
|
+
|
262
|
+
module WEBrick::HTMLUtils
|
263
|
+
private
|
264
|
+
|
265
|
+
# Escapes &, ", > and < in +string+
|
266
|
+
def escape(string); end
|
267
|
+
|
268
|
+
class << self
|
269
|
+
# Escapes &, ", > and < in +string+
|
270
|
+
def escape(string); end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
# HTTPAuth provides both basic and digest authentication.
|
275
|
+
#
|
276
|
+
# To enable authentication for requests in WEBrick you will need a user
|
277
|
+
# database and an authenticator. To start, here's an Htpasswd database for
|
278
|
+
# use with a DigestAuth authenticator:
|
279
|
+
#
|
280
|
+
# config = { :Realm => 'DigestAuth example realm' }
|
281
|
+
#
|
282
|
+
# htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file'
|
283
|
+
# htpasswd.auth_type = WEBrick::HTTPAuth::DigestAuth
|
284
|
+
# htpasswd.set_passwd config[:Realm], 'username', 'password'
|
285
|
+
# htpasswd.flush
|
286
|
+
#
|
287
|
+
# The +:Realm+ is used to provide different access to different groups
|
288
|
+
# across several resources on a server. Typically you'll need only one
|
289
|
+
# realm for a server.
|
290
|
+
#
|
291
|
+
# This database can be used to create an authenticator:
|
292
|
+
#
|
293
|
+
# config[:UserDB] = htpasswd
|
294
|
+
#
|
295
|
+
# digest_auth = WEBrick::HTTPAuth::DigestAuth.new config
|
296
|
+
#
|
297
|
+
# To authenticate a request call #authenticate with a request and response
|
298
|
+
# object in a servlet:
|
299
|
+
#
|
300
|
+
# def do_GET req, res
|
301
|
+
# @authenticator.authenticate req, res
|
302
|
+
# end
|
303
|
+
#
|
304
|
+
# For digest authentication the authenticator must not be created every
|
305
|
+
# request, it must be passed in as an option via WEBrick::HTTPServer#mount.
|
306
|
+
module WEBrick::HTTPAuth
|
307
|
+
private
|
308
|
+
|
309
|
+
def _basic_auth(req, res, realm, req_field, res_field, err_type, block); end
|
310
|
+
|
311
|
+
# Simple wrapper for providing basic authentication for a request. When
|
312
|
+
# called with a request +req+, response +res+, authentication +realm+ and
|
313
|
+
# +block+ the block will be called with a +username+ and +password+. If
|
314
|
+
# the block returns true the request is allowed to continue, otherwise an
|
315
|
+
# HTTPStatus::Unauthorized error is raised.
|
316
|
+
def basic_auth(req, res, realm, &block); end
|
317
|
+
|
318
|
+
# Simple wrapper for providing basic authentication for a proxied request.
|
319
|
+
# When called with a request +req+, response +res+, authentication +realm+
|
320
|
+
# and +block+ the block will be called with a +username+ and +password+.
|
321
|
+
# If the block returns true the request is allowed to continue, otherwise
|
322
|
+
# an HTTPStatus::ProxyAuthenticationRequired error is raised.
|
323
|
+
def proxy_basic_auth(req, res, realm, &block); end
|
324
|
+
|
325
|
+
class << self
|
326
|
+
def _basic_auth(req, res, realm, req_field, res_field, err_type, block); end
|
327
|
+
|
328
|
+
# Simple wrapper for providing basic authentication for a request. When
|
329
|
+
# called with a request +req+, response +res+, authentication +realm+ and
|
330
|
+
# +block+ the block will be called with a +username+ and +password+. If
|
331
|
+
# the block returns true the request is allowed to continue, otherwise an
|
332
|
+
# HTTPStatus::Unauthorized error is raised.
|
333
|
+
def basic_auth(req, res, realm, &block); end
|
334
|
+
|
335
|
+
# Simple wrapper for providing basic authentication for a proxied request.
|
336
|
+
# When called with a request +req+, response +res+, authentication +realm+
|
337
|
+
# and +block+ the block will be called with a +username+ and +password+.
|
338
|
+
# If the block returns true the request is allowed to continue, otherwise
|
339
|
+
# an HTTPStatus::ProxyAuthenticationRequired error is raised.
|
340
|
+
def proxy_basic_auth(req, res, realm, &block); end
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# Module providing generic support for both Digest and Basic
|
345
|
+
# authentication schemes.
|
346
|
+
module WEBrick::HTTPAuth::Authenticator
|
347
|
+
# The logger for this authenticator
|
348
|
+
def logger; end
|
349
|
+
|
350
|
+
# The realm this authenticator covers
|
351
|
+
def realm; end
|
352
|
+
|
353
|
+
# The user database for this authenticator
|
354
|
+
def userdb; end
|
355
|
+
|
356
|
+
private
|
357
|
+
|
358
|
+
# Initializes the authenticator from +config+
|
359
|
+
def check_init(config); end
|
360
|
+
|
361
|
+
# Ensures +req+ has credentials that can be authenticated.
|
362
|
+
def check_scheme(req); end
|
363
|
+
|
364
|
+
def error(fmt, *args); end
|
365
|
+
def info(fmt, *args); end
|
366
|
+
def log(meth, fmt, *args); end
|
367
|
+
end
|
368
|
+
|
369
|
+
WEBrick::HTTPAuth::Authenticator::AuthException = WEBrick::HTTPStatus::Unauthorized
|
370
|
+
|
371
|
+
# Basic Authentication for WEBrick
|
372
|
+
#
|
373
|
+
# Use this class to add basic authentication to a WEBrick servlet.
|
374
|
+
#
|
375
|
+
# Here is an example of how to set up a BasicAuth:
|
376
|
+
#
|
377
|
+
# config = { :Realm => 'BasicAuth example realm' }
|
378
|
+
#
|
379
|
+
# htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file', password_hash: :bcrypt
|
380
|
+
# htpasswd.set_passwd config[:Realm], 'username', 'password'
|
381
|
+
# htpasswd.flush
|
382
|
+
#
|
383
|
+
# config[:UserDB] = htpasswd
|
384
|
+
#
|
385
|
+
# basic_auth = WEBrick::HTTPAuth::BasicAuth.new config
|
386
|
+
class WEBrick::HTTPAuth::BasicAuth
|
387
|
+
include ::WEBrick::HTTPAuth::Authenticator
|
388
|
+
|
389
|
+
# Creates a new BasicAuth instance.
|
390
|
+
#
|
391
|
+
# See WEBrick::Config::BasicAuth for default configuration entries
|
392
|
+
#
|
393
|
+
# You must supply the following configuration entries:
|
394
|
+
#
|
395
|
+
# :Realm:: The name of the realm being protected.
|
396
|
+
# :UserDB:: A database of usernames and passwords.
|
397
|
+
# A WEBrick::HTTPAuth::Htpasswd instance should be used.
|
398
|
+
#
|
399
|
+
# @return [BasicAuth] a new instance of BasicAuth
|
400
|
+
def initialize(config, default = T.unsafe(nil)); end
|
401
|
+
|
402
|
+
# Authenticates a +req+ and returns a 401 Unauthorized using +res+ if
|
403
|
+
# the authentication was not correct.
|
404
|
+
def authenticate(req, res); end
|
405
|
+
|
406
|
+
# Returns a challenge response which asks for authentication information
|
407
|
+
#
|
408
|
+
# @raise [@auth_exception]
|
409
|
+
def challenge(req, res); end
|
410
|
+
|
411
|
+
# Returns the value of attribute logger.
|
412
|
+
def logger; end
|
413
|
+
|
414
|
+
# Returns the value of attribute realm.
|
415
|
+
def realm; end
|
416
|
+
|
417
|
+
# Returns the value of attribute userdb.
|
418
|
+
def userdb; end
|
419
|
+
|
420
|
+
class << self
|
421
|
+
# Used by UserDB to create a basic password entry
|
422
|
+
def make_passwd(realm, user, pass); end
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
# RFC 2617 Digest Access Authentication for WEBrick
|
427
|
+
#
|
428
|
+
# Use this class to add digest authentication to a WEBrick servlet.
|
429
|
+
#
|
430
|
+
# Here is an example of how to set up DigestAuth:
|
431
|
+
#
|
432
|
+
# config = { :Realm => 'DigestAuth example realm' }
|
433
|
+
#
|
434
|
+
# htdigest = WEBrick::HTTPAuth::Htdigest.new 'my_password_file'
|
435
|
+
# htdigest.set_passwd config[:Realm], 'username', 'password'
|
436
|
+
# htdigest.flush
|
437
|
+
#
|
438
|
+
# config[:UserDB] = htdigest
|
439
|
+
#
|
440
|
+
# digest_auth = WEBrick::HTTPAuth::DigestAuth.new config
|
441
|
+
#
|
442
|
+
# When using this as with a servlet be sure not to create a new DigestAuth
|
443
|
+
# object in the servlet's #initialize. By default WEBrick creates a new
|
444
|
+
# servlet instance for every request and the DigestAuth object must be
|
445
|
+
# used across requests.
|
446
|
+
class WEBrick::HTTPAuth::DigestAuth
|
447
|
+
include ::WEBrick::HTTPAuth::Authenticator
|
448
|
+
|
449
|
+
# Creates a new DigestAuth instance. Be sure to use the same DigestAuth
|
450
|
+
# instance for multiple requests as it saves state between requests in
|
451
|
+
# order to perform authentication.
|
452
|
+
#
|
453
|
+
# See WEBrick::Config::DigestAuth for default configuration entries
|
454
|
+
#
|
455
|
+
# You must supply the following configuration entries:
|
456
|
+
#
|
457
|
+
# :Realm:: The name of the realm being protected.
|
458
|
+
# :UserDB:: A database of usernames and passwords.
|
459
|
+
# A WEBrick::HTTPAuth::Htdigest instance should be used.
|
460
|
+
#
|
461
|
+
# @return [DigestAuth] a new instance of DigestAuth
|
462
|
+
def initialize(config, default = T.unsafe(nil)); end
|
463
|
+
|
464
|
+
# Digest authentication algorithm
|
465
|
+
def algorithm; end
|
466
|
+
|
467
|
+
# Authenticates a +req+ and returns a 401 Unauthorized using +res+ if
|
468
|
+
# the authentication was not correct.
|
469
|
+
def authenticate(req, res); end
|
470
|
+
|
471
|
+
# Returns a challenge response which asks for authentication information
|
472
|
+
#
|
473
|
+
# @raise [@auth_exception]
|
474
|
+
def challenge(req, res, stale = T.unsafe(nil)); end
|
475
|
+
|
476
|
+
# Quality of protection. RFC 2617 defines "auth" and "auth-int"
|
477
|
+
def qop; end
|
478
|
+
|
479
|
+
private
|
480
|
+
|
481
|
+
def _authenticate(req, res); end
|
482
|
+
def check_nonce(req, auth_req); end
|
483
|
+
def check_opaque(opaque_struct, req, auth_req); end
|
484
|
+
def check_uri(req, auth_req); end
|
485
|
+
def generate_next_nonce(req); end
|
486
|
+
def generate_opaque(req); end
|
487
|
+
def hexdigest(*args); end
|
488
|
+
def split_param_value(string); end
|
489
|
+
|
490
|
+
class << self
|
491
|
+
# Used by UserDB to create a digest password entry
|
492
|
+
def make_passwd(realm, user, pass); end
|
493
|
+
end
|
494
|
+
end
|
495
|
+
|
496
|
+
# Htdigest accesses apache-compatible digest password files. Passwords are
|
497
|
+
# matched to a realm where they are valid. For security, the path for a
|
498
|
+
# digest password database should be stored outside of the paths available
|
499
|
+
# to the HTTP server.
|
500
|
+
#
|
501
|
+
# Htdigest is intended for use with WEBrick::HTTPAuth::DigestAuth and
|
502
|
+
# stores passwords using cryptographic hashes.
|
503
|
+
#
|
504
|
+
# htpasswd = WEBrick::HTTPAuth::Htdigest.new 'my_password_file'
|
505
|
+
# htpasswd.set_passwd 'my realm', 'username', 'password'
|
506
|
+
# htpasswd.flush
|
507
|
+
class WEBrick::HTTPAuth::Htdigest
|
508
|
+
include ::WEBrick::HTTPAuth::UserDB
|
509
|
+
|
510
|
+
# Open a digest password database at +path+
|
511
|
+
#
|
512
|
+
# @return [Htdigest] a new instance of Htdigest
|
513
|
+
def initialize(path); end
|
514
|
+
|
515
|
+
# Removes a password from the database for +user+ in +realm+.
|
516
|
+
def delete_passwd(realm, user); end
|
517
|
+
|
518
|
+
# Iterate passwords in the database.
|
519
|
+
def each; end
|
520
|
+
|
521
|
+
# Flush the password database. If +output+ is given the database will
|
522
|
+
# be written there instead of to the original path.
|
523
|
+
def flush(output = T.unsafe(nil)); end
|
524
|
+
|
525
|
+
# Retrieves a password from the database for +user+ in +realm+. If
|
526
|
+
# +reload_db+ is true the database will be reloaded first.
|
527
|
+
def get_passwd(realm, user, reload_db); end
|
528
|
+
|
529
|
+
# Reloads passwords from the database
|
530
|
+
def reload; end
|
531
|
+
|
532
|
+
# Sets a password in the database for +user+ in +realm+ to +pass+.
|
533
|
+
def set_passwd(realm, user, pass); end
|
534
|
+
end
|
535
|
+
|
536
|
+
# Htgroup accesses apache-compatible group files. Htgroup can be used to
|
537
|
+
# provide group-based authentication for users. Currently Htgroup is not
|
538
|
+
# directly integrated with any authenticators in WEBrick. For security,
|
539
|
+
# the path for a digest password database should be stored outside of the
|
540
|
+
# paths available to the HTTP server.
|
541
|
+
#
|
542
|
+
# Example:
|
543
|
+
#
|
544
|
+
# htgroup = WEBrick::HTTPAuth::Htgroup.new 'my_group_file'
|
545
|
+
# htgroup.add 'superheroes', %w[spiderman batman]
|
546
|
+
#
|
547
|
+
# htgroup.members('superheroes').include? 'magneto' # => false
|
548
|
+
class WEBrick::HTTPAuth::Htgroup
|
549
|
+
# Open a group database at +path+
|
550
|
+
#
|
551
|
+
# @return [Htgroup] a new instance of Htgroup
|
552
|
+
def initialize(path); end
|
553
|
+
|
554
|
+
# Add an Array of +members+ to +group+
|
555
|
+
def add(group, members); end
|
556
|
+
|
557
|
+
# Flush the group database. If +output+ is given the database will be
|
558
|
+
# written there instead of to the original path.
|
559
|
+
def flush(output = T.unsafe(nil)); end
|
560
|
+
|
561
|
+
# Retrieve the list of members from +group+
|
562
|
+
def members(group); end
|
563
|
+
|
564
|
+
# Reload groups from the database
|
565
|
+
def reload; end
|
566
|
+
end
|
567
|
+
|
568
|
+
# Htpasswd accesses apache-compatible password files. Passwords are
|
569
|
+
# matched to a realm where they are valid. For security, the path for a
|
570
|
+
# password database should be stored outside of the paths available to the
|
571
|
+
# HTTP server.
|
572
|
+
#
|
573
|
+
# Htpasswd is intended for use with WEBrick::HTTPAuth::BasicAuth.
|
574
|
+
#
|
575
|
+
# To create an Htpasswd database with a single user:
|
576
|
+
#
|
577
|
+
# htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file'
|
578
|
+
# htpasswd.set_passwd 'my realm', 'username', 'password'
|
579
|
+
# htpasswd.flush
|
580
|
+
class WEBrick::HTTPAuth::Htpasswd
|
581
|
+
include ::WEBrick::HTTPAuth::UserDB
|
582
|
+
|
583
|
+
# Open a password database at +path+
|
584
|
+
#
|
585
|
+
# @return [Htpasswd] a new instance of Htpasswd
|
586
|
+
def initialize(path, password_hash: T.unsafe(nil)); end
|
587
|
+
|
588
|
+
# Removes a password from the database for +user+ in +realm+.
|
589
|
+
def delete_passwd(realm, user); end
|
590
|
+
|
591
|
+
# Iterate passwords in the database.
|
592
|
+
def each; end
|
593
|
+
|
594
|
+
# Flush the password database. If +output+ is given the database will
|
595
|
+
# be written there instead of to the original path.
|
596
|
+
def flush(output = T.unsafe(nil)); end
|
597
|
+
|
598
|
+
# Retrieves a password from the database for +user+ in +realm+. If
|
599
|
+
# +reload_db+ is true the database will be reloaded first.
|
600
|
+
def get_passwd(realm, user, reload_db); end
|
601
|
+
|
602
|
+
# Reload passwords from the database
|
603
|
+
def reload; end
|
604
|
+
|
605
|
+
# Sets a password in the database for +user+ in +realm+ to +pass+.
|
606
|
+
def set_passwd(realm, user, pass); end
|
607
|
+
end
|
608
|
+
|
609
|
+
WEBrick::HTTPAuth::ProxyAuthenticator::AuthException = WEBrick::HTTPStatus::ProxyAuthenticationRequired
|
610
|
+
|
611
|
+
# Basic authentication for proxy servers. See BasicAuth for details.
|
612
|
+
class WEBrick::HTTPAuth::ProxyBasicAuth < ::WEBrick::HTTPAuth::BasicAuth
|
613
|
+
include ::WEBrick::HTTPAuth::ProxyAuthenticator
|
614
|
+
end
|
615
|
+
|
616
|
+
# Digest authentication for proxy servers. See DigestAuth for details.
|
617
|
+
class WEBrick::HTTPAuth::ProxyDigestAuth < ::WEBrick::HTTPAuth::DigestAuth
|
618
|
+
include ::WEBrick::HTTPAuth::ProxyAuthenticator
|
619
|
+
|
620
|
+
private
|
621
|
+
|
622
|
+
def check_uri(req, auth_req); end
|
623
|
+
end
|
624
|
+
|
625
|
+
# User database mixin for HTTPAuth. This mixin dispatches user record
|
626
|
+
# access to the underlying auth_type for this database.
|
627
|
+
module WEBrick::HTTPAuth::UserDB
|
628
|
+
# The authentication type.
|
629
|
+
#
|
630
|
+
# WEBrick::HTTPAuth::BasicAuth or WEBrick::HTTPAuth::DigestAuth are
|
631
|
+
# built-in.
|
632
|
+
def auth_type; end
|
633
|
+
|
634
|
+
# The authentication type.
|
635
|
+
#
|
636
|
+
# WEBrick::HTTPAuth::BasicAuth or WEBrick::HTTPAuth::DigestAuth are
|
637
|
+
# built-in.
|
638
|
+
def auth_type=(_arg0); end
|
639
|
+
|
640
|
+
# Retrieves a password in +realm+ for +user+ for the auth_type of this
|
641
|
+
# database. +reload_db+ is a dummy value.
|
642
|
+
def get_passwd(realm, user, reload_db = T.unsafe(nil)); end
|
643
|
+
|
644
|
+
# Creates an obscured password in +realm+ with +user+ and +password+
|
645
|
+
# using the auth_type of this database.
|
646
|
+
def make_passwd(realm, user, pass); end
|
647
|
+
|
648
|
+
# Sets a password in +realm+ with +user+ and +password+ for the
|
649
|
+
# auth_type of this database.
|
650
|
+
def set_passwd(realm, user, pass); end
|
651
|
+
end
|
652
|
+
|
653
|
+
# --
|
654
|
+
# Adds SSL functionality to WEBrick::HTTPRequest
|
655
|
+
class WEBrick::HTTPRequest
|
656
|
+
# Creates a new HTTP request. WEBrick::Config::HTTP is the default
|
657
|
+
# configuration.
|
658
|
+
#
|
659
|
+
# @return [HTTPRequest] a new instance of HTTPRequest
|
660
|
+
def initialize(config); end
|
661
|
+
|
662
|
+
# Retrieves +header_name+
|
663
|
+
def [](header_name); end
|
664
|
+
|
665
|
+
# The Accept header value
|
666
|
+
def accept; end
|
667
|
+
|
668
|
+
# The Accept-Charset header value
|
669
|
+
def accept_charset; end
|
670
|
+
|
671
|
+
# The Accept-Encoding header value
|
672
|
+
def accept_encoding; end
|
673
|
+
|
674
|
+
# The Accept-Language header value
|
675
|
+
def accept_language; end
|
676
|
+
|
677
|
+
# The socket address of the server
|
678
|
+
def addr; end
|
679
|
+
|
680
|
+
# Hash of request attributes
|
681
|
+
def attributes; end
|
682
|
+
|
683
|
+
# Returns the request body.
|
684
|
+
def body(&block); end
|
685
|
+
|
686
|
+
# Prepares the HTTPRequest object for use as the
|
687
|
+
# source for IO.copy_stream
|
688
|
+
def body_reader; end
|
689
|
+
|
690
|
+
# The content-length header
|
691
|
+
def content_length; end
|
692
|
+
|
693
|
+
# The content-type header
|
694
|
+
def content_type; end
|
695
|
+
|
696
|
+
# Generate HTTP/1.1 100 continue response if the client expects it,
|
697
|
+
# otherwise does nothing.
|
698
|
+
def continue; end
|
699
|
+
|
700
|
+
# The parsed request cookies
|
701
|
+
def cookies; end
|
702
|
+
|
703
|
+
# Iterates over the request headers
|
704
|
+
def each; end
|
705
|
+
|
706
|
+
# Consumes any remaining body and updates keep-alive status
|
707
|
+
def fixup; end
|
708
|
+
|
709
|
+
# The parsed header of the request
|
710
|
+
def header; end
|
711
|
+
|
712
|
+
# The host this request is for
|
713
|
+
def host; end
|
714
|
+
|
715
|
+
# The HTTP version of the request
|
716
|
+
def http_version; end
|
717
|
+
|
718
|
+
# Is this a keep-alive connection?
|
719
|
+
def keep_alive; end
|
720
|
+
|
721
|
+
# Should the connection this request was made on be kept alive?
|
722
|
+
#
|
723
|
+
# @return [Boolean]
|
724
|
+
def keep_alive?; end
|
725
|
+
|
726
|
+
# This method provides the metavariables defined by the revision 3
|
727
|
+
# of "The WWW Common Gateway Interface Version 1.1"
|
728
|
+
# To browse the current document of CGI Version 1.1, see below:
|
729
|
+
# http://tools.ietf.org/html/rfc3875
|
730
|
+
def meta_vars; end
|
731
|
+
|
732
|
+
# Parses a request from +socket+. This is called internally by
|
733
|
+
# WEBrick::HTTPServer.
|
734
|
+
def parse(socket = T.unsafe(nil)); end
|
735
|
+
|
736
|
+
# The request path
|
737
|
+
def path; end
|
738
|
+
|
739
|
+
# The path info (CGI variable)
|
740
|
+
def path_info; end
|
741
|
+
|
742
|
+
# The path info (CGI variable)
|
743
|
+
def path_info=(_arg0); end
|
744
|
+
|
745
|
+
# The socket address of the client
|
746
|
+
def peeraddr; end
|
747
|
+
|
748
|
+
# The port this request is for
|
749
|
+
def port; end
|
750
|
+
|
751
|
+
# Request query as a Hash
|
752
|
+
def query; end
|
753
|
+
|
754
|
+
# The query from the URI of the request
|
755
|
+
def query_string; end
|
756
|
+
|
757
|
+
# The query from the URI of the request
|
758
|
+
def query_string=(_arg0); end
|
759
|
+
|
760
|
+
# The raw header of the request
|
761
|
+
def raw_header; end
|
762
|
+
|
763
|
+
# for IO.copy_stream.
|
764
|
+
def readpartial(size, buf = T.unsafe(nil)); end
|
765
|
+
|
766
|
+
# The client's IP address
|
767
|
+
def remote_ip; end
|
768
|
+
|
769
|
+
# The complete request line such as:
|
770
|
+
#
|
771
|
+
# GET / HTTP/1.1
|
772
|
+
def request_line; end
|
773
|
+
|
774
|
+
# The request method, GET, POST, PUT, etc.
|
775
|
+
def request_method; end
|
776
|
+
|
777
|
+
# The local time this request was received
|
778
|
+
def request_time; end
|
779
|
+
|
780
|
+
# The parsed URI of the request
|
781
|
+
def request_uri; end
|
782
|
+
|
783
|
+
# The script name (CGI variable)
|
784
|
+
def script_name; end
|
785
|
+
|
786
|
+
# The script name (CGI variable)
|
787
|
+
def script_name=(_arg0); end
|
788
|
+
|
789
|
+
# The server name this request is for
|
790
|
+
def server_name; end
|
791
|
+
|
792
|
+
# Is this an SSL request?
|
793
|
+
#
|
794
|
+
# @return [Boolean]
|
795
|
+
def ssl?; end
|
796
|
+
|
797
|
+
def to_s; end
|
798
|
+
|
799
|
+
# The unparsed URI of the request
|
800
|
+
def unparsed_uri; end
|
801
|
+
|
802
|
+
# The remote user (CGI variable)
|
803
|
+
def user; end
|
804
|
+
|
805
|
+
# The remote user (CGI variable)
|
806
|
+
def user=(_arg0); end
|
807
|
+
|
808
|
+
private
|
809
|
+
|
810
|
+
def _read_data(io, method, *arg); end
|
811
|
+
def parse_query; end
|
812
|
+
def parse_uri(str, scheme = T.unsafe(nil)); end
|
813
|
+
def read_body(socket, block); end
|
814
|
+
def read_chunk_size(socket); end
|
815
|
+
def read_chunked(socket, block); end
|
816
|
+
def read_data(io, size); end
|
817
|
+
def read_header(socket); end
|
818
|
+
def read_line(io, size = T.unsafe(nil)); end
|
819
|
+
|
820
|
+
# @raise [HTTPStatus::EOFError]
|
821
|
+
def read_request_line(socket); end
|
822
|
+
|
823
|
+
# It's said that all X-Forwarded-* headers will contain more than one
|
824
|
+
# (comma-separated) value if the original request already contained one of
|
825
|
+
# these headers. Since we could use these values as Host header, we choose
|
826
|
+
# the initial(first) value. (apr_table_mergen() adds new value after the
|
827
|
+
# existing value with ", " prefix)
|
828
|
+
def setup_forwarded_info; end
|
829
|
+
end
|
830
|
+
|
831
|
+
# same as Mongrel, Thin and Puma
|
832
|
+
WEBrick::HTTPRequest::MAX_HEADER_LENGTH = T.let(T.unsafe(nil), Integer)
|
833
|
+
|
834
|
+
# An HTTP response. This is filled in by the service or do_* methods of a
|
835
|
+
# WEBrick HTTP Servlet.
|
836
|
+
class WEBrick::HTTPResponse
|
837
|
+
# Creates a new HTTP response object. WEBrick::Config::HTTP is the
|
838
|
+
# default configuration.
|
839
|
+
#
|
840
|
+
# @return [HTTPResponse] a new instance of HTTPResponse
|
841
|
+
def initialize(config); end
|
842
|
+
|
843
|
+
# Retrieves the response header +field+
|
844
|
+
def [](field); end
|
845
|
+
|
846
|
+
# Sets the response header +field+ to +value+
|
847
|
+
def []=(field, value); end
|
848
|
+
|
849
|
+
# Body may be:
|
850
|
+
# * a String;
|
851
|
+
# * an IO-like object that responds to +#read+ and +#readpartial+;
|
852
|
+
# * a Proc-like object that responds to +#call+.
|
853
|
+
#
|
854
|
+
# In the latter case, either #chunked= should be set to +true+,
|
855
|
+
# or <code>header['content-length']</code> explicitly provided.
|
856
|
+
# Example:
|
857
|
+
#
|
858
|
+
# server.mount_proc '/' do |req, res|
|
859
|
+
# res.chunked = true
|
860
|
+
# # or
|
861
|
+
# # res.header['content-length'] = 10
|
862
|
+
# res.body = proc { |out| out.write(Time.now.to_s) }
|
863
|
+
# end
|
864
|
+
def body; end
|
865
|
+
|
866
|
+
# Body may be:
|
867
|
+
# * a String;
|
868
|
+
# * an IO-like object that responds to +#read+ and +#readpartial+;
|
869
|
+
# * a Proc-like object that responds to +#call+.
|
870
|
+
#
|
871
|
+
# In the latter case, either #chunked= should be set to +true+,
|
872
|
+
# or <code>header['content-length']</code> explicitly provided.
|
873
|
+
# Example:
|
874
|
+
#
|
875
|
+
# server.mount_proc '/' do |req, res|
|
876
|
+
# res.chunked = true
|
877
|
+
# # or
|
878
|
+
# # res.header['content-length'] = 10
|
879
|
+
# res.body = proc { |out| out.write(Time.now.to_s) }
|
880
|
+
# end
|
881
|
+
def body=(_arg0); end
|
882
|
+
|
883
|
+
# Enables chunked transfer encoding.
|
884
|
+
def chunked=(val); end
|
885
|
+
|
886
|
+
# Will this response body be returned using chunked transfer-encoding?
|
887
|
+
#
|
888
|
+
# @return [Boolean]
|
889
|
+
def chunked?; end
|
890
|
+
|
891
|
+
# Configuration for this response
|
892
|
+
def config; end
|
893
|
+
|
894
|
+
# The content-length header
|
895
|
+
def content_length; end
|
896
|
+
|
897
|
+
# Sets the content-length header to +len+
|
898
|
+
def content_length=(len); end
|
899
|
+
|
900
|
+
# The content-type header
|
901
|
+
def content_type; end
|
902
|
+
|
903
|
+
# Sets the content-type header to +type+
|
904
|
+
def content_type=(type); end
|
905
|
+
|
906
|
+
# Response cookies
|
907
|
+
def cookies; end
|
908
|
+
|
909
|
+
# Iterates over each header in the response
|
910
|
+
def each; end
|
911
|
+
|
912
|
+
# Filename of the static file in this response. Only used by the
|
913
|
+
# FileHandler servlet.
|
914
|
+
def filename; end
|
915
|
+
|
916
|
+
# Filename of the static file in this response. Only used by the
|
917
|
+
# FileHandler servlet.
|
918
|
+
def filename=(_arg0); end
|
919
|
+
|
920
|
+
# Response header
|
921
|
+
def header; end
|
922
|
+
|
923
|
+
# HTTP Response version
|
924
|
+
def http_version; end
|
925
|
+
|
926
|
+
# Is this a keep-alive response?
|
927
|
+
def keep_alive; end
|
928
|
+
|
929
|
+
# Is this a keep-alive response?
|
930
|
+
def keep_alive=(_arg0); end
|
931
|
+
|
932
|
+
# Will this response's connection be kept alive?
|
933
|
+
#
|
934
|
+
# @return [Boolean]
|
935
|
+
def keep_alive?; end
|
936
|
+
|
937
|
+
def make_body_tempfile; end
|
938
|
+
|
939
|
+
# Response reason phrase ("OK")
|
940
|
+
def reason_phrase; end
|
941
|
+
|
942
|
+
# Response reason phrase ("OK")
|
943
|
+
def reason_phrase=(_arg0); end
|
944
|
+
|
945
|
+
def remove_body_tempfile; end
|
946
|
+
|
947
|
+
# Request HTTP version for this response
|
948
|
+
def request_http_version; end
|
949
|
+
|
950
|
+
# Request HTTP version for this response
|
951
|
+
def request_http_version=(_arg0); end
|
952
|
+
|
953
|
+
# Request method for this response
|
954
|
+
def request_method; end
|
955
|
+
|
956
|
+
# Request method for this response
|
957
|
+
def request_method=(_arg0); end
|
958
|
+
|
959
|
+
# Request URI for this response
|
960
|
+
def request_uri; end
|
961
|
+
|
962
|
+
# Request URI for this response
|
963
|
+
def request_uri=(_arg0); end
|
964
|
+
|
965
|
+
# Sends the body on +socket+
|
966
|
+
def send_body(socket); end
|
967
|
+
|
968
|
+
# Sends the headers on +socket+
|
969
|
+
def send_header(socket); end
|
970
|
+
|
971
|
+
# Sends the response on +socket+
|
972
|
+
def send_response(socket); end
|
973
|
+
|
974
|
+
# Bytes sent in this response
|
975
|
+
def sent_size; end
|
976
|
+
|
977
|
+
# Creates an error page for exception +ex+ with an optional +backtrace+
|
978
|
+
def set_error(ex, backtrace = T.unsafe(nil)); end
|
979
|
+
|
980
|
+
# Redirects to +url+ with a WEBrick::HTTPStatus::Redirect +status+.
|
981
|
+
#
|
982
|
+
# Example:
|
983
|
+
#
|
984
|
+
# res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
|
985
|
+
def set_redirect(status, url); end
|
986
|
+
|
987
|
+
# Sets up the headers for sending
|
988
|
+
def setup_header; end
|
989
|
+
|
990
|
+
# Response status code (200)
|
991
|
+
def status; end
|
992
|
+
|
993
|
+
# Sets the response's status to the +status+ code
|
994
|
+
def status=(status); end
|
995
|
+
|
996
|
+
# The response's HTTP status line
|
997
|
+
def status_line; end
|
998
|
+
|
999
|
+
private
|
1000
|
+
|
1001
|
+
# preserved for compatibility with some 3rd-party handlers
|
1002
|
+
def _write_data(socket, data); end
|
1003
|
+
|
1004
|
+
def check_header(header_value); end
|
1005
|
+
|
1006
|
+
# :stopdoc:
|
1007
|
+
def error_body(backtrace, ex, host, port); end
|
1008
|
+
|
1009
|
+
def send_body_io(socket); end
|
1010
|
+
def send_body_proc(socket); end
|
1011
|
+
def send_body_string(socket); end
|
1012
|
+
end
|
1013
|
+
|
1014
|
+
class WEBrick::HTTPResponse::ChunkedWrapper
|
1015
|
+
# @return [ChunkedWrapper] a new instance of ChunkedWrapper
|
1016
|
+
def initialize(socket, resp); end
|
1017
|
+
|
1018
|
+
def <<(*buf); end
|
1019
|
+
def write(buf); end
|
1020
|
+
end
|
1021
|
+
|
1022
|
+
# An HTTP Server
|
1023
|
+
class WEBrick::HTTPServer < ::WEBrick::GenericServer
|
1024
|
+
# Creates a new HTTP server according to +config+
|
1025
|
+
#
|
1026
|
+
# An HTTP server uses the following attributes:
|
1027
|
+
#
|
1028
|
+
# :AccessLog:: An array of access logs. See WEBrick::AccessLog
|
1029
|
+
# :BindAddress:: Local address for the server to bind to
|
1030
|
+
# :DocumentRoot:: Root path to serve files from
|
1031
|
+
# :DocumentRootOptions:: Options for the default HTTPServlet::FileHandler
|
1032
|
+
# :HTTPVersion:: The HTTP version of this server
|
1033
|
+
# :Port:: Port to listen on
|
1034
|
+
# :RequestCallback:: Called with a request and response before each
|
1035
|
+
# request is serviced.
|
1036
|
+
# :RequestTimeout:: Maximum time to wait between requests
|
1037
|
+
# :ServerAlias:: Array of alternate names for this server for virtual
|
1038
|
+
# hosting
|
1039
|
+
# :ServerName:: Name for this server for virtual hosting
|
1040
|
+
#
|
1041
|
+
# @return [HTTPServer] a new instance of HTTPServer
|
1042
|
+
def initialize(config = T.unsafe(nil), default = T.unsafe(nil)); end
|
1043
|
+
|
1044
|
+
# Logs +req+ and +res+ in the access logs. +config+ is used for the
|
1045
|
+
# server name.
|
1046
|
+
def access_log(config, req, res); end
|
1047
|
+
|
1048
|
+
# Creates the HTTPRequest used when handling the HTTP
|
1049
|
+
# request. Can be overridden by subclasses.
|
1050
|
+
def create_request(with_webrick_config); end
|
1051
|
+
|
1052
|
+
# Creates the HTTPResponse used when handling the HTTP
|
1053
|
+
# request. Can be overridden by subclasses.
|
1054
|
+
def create_response(with_webrick_config); end
|
1055
|
+
|
1056
|
+
# The default OPTIONS request handler says GET, HEAD, POST and OPTIONS
|
1057
|
+
# requests are allowed.
|
1058
|
+
def do_OPTIONS(req, res); end
|
1059
|
+
|
1060
|
+
# Finds the appropriate virtual host to handle +req+
|
1061
|
+
def lookup_server(req); end
|
1062
|
+
|
1063
|
+
# Mounts +servlet+ on +dir+ passing +options+ to the servlet at creation
|
1064
|
+
# time
|
1065
|
+
def mount(dir, servlet, *options); end
|
1066
|
+
|
1067
|
+
# Mounts +proc+ or +block+ on +dir+ and calls it with a
|
1068
|
+
# WEBrick::HTTPRequest and WEBrick::HTTPResponse
|
1069
|
+
#
|
1070
|
+
# @raise [HTTPServerError]
|
1071
|
+
def mount_proc(dir, proc = T.unsafe(nil), &block); end
|
1072
|
+
|
1073
|
+
# Processes requests on +sock+
|
1074
|
+
def run(sock); end
|
1075
|
+
|
1076
|
+
# Finds a servlet for +path+
|
1077
|
+
def search_servlet(path); end
|
1078
|
+
|
1079
|
+
# Services +req+ and fills in +res+
|
1080
|
+
#
|
1081
|
+
# @raise [HTTPStatus::NotFound]
|
1082
|
+
def service(req, res); end
|
1083
|
+
|
1084
|
+
# Unmounts +dir+
|
1085
|
+
def umount(dir); end
|
1086
|
+
|
1087
|
+
# Unmounts +dir+
|
1088
|
+
def unmount(dir); end
|
1089
|
+
|
1090
|
+
# Adds +server+ as a virtual host.
|
1091
|
+
def virtual_host(server); end
|
1092
|
+
end
|
1093
|
+
|
1094
|
+
# Mount table for the path a servlet is mounted on in the directory space
|
1095
|
+
# of the server. Users of WEBrick can only access this indirectly via
|
1096
|
+
# WEBrick::HTTPServer#mount, WEBrick::HTTPServer#unmount and
|
1097
|
+
# WEBrick::HTTPServer#search_servlet
|
1098
|
+
class WEBrick::HTTPServer::MountTable
|
1099
|
+
# @return [MountTable] a new instance of MountTable
|
1100
|
+
def initialize; end
|
1101
|
+
|
1102
|
+
def [](dir); end
|
1103
|
+
def []=(dir, val); end
|
1104
|
+
def delete(dir); end
|
1105
|
+
def scan(path); end
|
1106
|
+
|
1107
|
+
private
|
1108
|
+
|
1109
|
+
def compile; end
|
1110
|
+
def normalize(dir); end
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
# AbstractServlet allows HTTP server modules to be reused across multiple
|
1114
|
+
# servers and allows encapsulation of functionality.
|
1115
|
+
#
|
1116
|
+
# By default a servlet will respond to GET, HEAD (through an alias to GET)
|
1117
|
+
# and OPTIONS requests.
|
1118
|
+
#
|
1119
|
+
# By default a new servlet is initialized for every request. A servlet
|
1120
|
+
# instance can be reused by overriding ::get_instance in the
|
1121
|
+
# AbstractServlet subclass.
|
1122
|
+
#
|
1123
|
+
# == A Simple Servlet
|
1124
|
+
#
|
1125
|
+
# class Simple < WEBrick::HTTPServlet::AbstractServlet
|
1126
|
+
# def do_GET request, response
|
1127
|
+
# status, content_type, body = do_stuff_with request
|
1128
|
+
#
|
1129
|
+
# response.status = status
|
1130
|
+
# response['Content-Type'] = content_type
|
1131
|
+
# response.body = body
|
1132
|
+
# end
|
1133
|
+
#
|
1134
|
+
# def do_stuff_with request
|
1135
|
+
# return 200, 'text/plain', 'you got a page'
|
1136
|
+
# end
|
1137
|
+
# end
|
1138
|
+
#
|
1139
|
+
# This servlet can be mounted on a server at a given path:
|
1140
|
+
#
|
1141
|
+
# server.mount '/simple', Simple
|
1142
|
+
#
|
1143
|
+
# == Servlet Configuration
|
1144
|
+
#
|
1145
|
+
# Servlets can be configured via initialize. The first argument is the
|
1146
|
+
# HTTP server the servlet is being initialized for.
|
1147
|
+
#
|
1148
|
+
# class Configurable < Simple
|
1149
|
+
# def initialize server, color, size
|
1150
|
+
# super server
|
1151
|
+
# @color = color
|
1152
|
+
# @size = size
|
1153
|
+
# end
|
1154
|
+
#
|
1155
|
+
# def do_stuff_with request
|
1156
|
+
# content = "<p " \
|
1157
|
+
# %q{style="color: #{@color}; font-size: #{@size}"} \
|
1158
|
+
# ">Hello, World!"
|
1159
|
+
#
|
1160
|
+
# return 200, "text/html", content
|
1161
|
+
# end
|
1162
|
+
# end
|
1163
|
+
#
|
1164
|
+
# This servlet must be provided two arguments at mount time:
|
1165
|
+
#
|
1166
|
+
# server.mount '/configurable', Configurable, 'red', '2em'
|
1167
|
+
class WEBrick::HTTPServlet::AbstractServlet
|
1168
|
+
# Initializes a new servlet for +server+ using +options+ which are
|
1169
|
+
# stored as-is in +@options+. +@logger+ is also provided.
|
1170
|
+
#
|
1171
|
+
# @return [AbstractServlet] a new instance of AbstractServlet
|
1172
|
+
def initialize(server, *options); end
|
1173
|
+
|
1174
|
+
# Raises a NotFound exception
|
1175
|
+
#
|
1176
|
+
# @raise [HTTPStatus::NotFound]
|
1177
|
+
def do_GET(req, res); end
|
1178
|
+
|
1179
|
+
# Dispatches to do_GET
|
1180
|
+
def do_HEAD(req, res); end
|
1181
|
+
|
1182
|
+
# Returns the allowed HTTP request methods
|
1183
|
+
def do_OPTIONS(req, res); end
|
1184
|
+
|
1185
|
+
# Dispatches to a +do_+ method based on +req+ if such a method is
|
1186
|
+
# available. (+do_GET+ for a GET request). Raises a MethodNotAllowed
|
1187
|
+
# exception if the method is not implemented.
|
1188
|
+
def service(req, res); end
|
1189
|
+
|
1190
|
+
private
|
1191
|
+
|
1192
|
+
# Redirects to a path ending in /
|
1193
|
+
def redirect_to_directory_uri(req, res); end
|
1194
|
+
|
1195
|
+
class << self
|
1196
|
+
# Factory for servlet instances that will handle a request from +server+
|
1197
|
+
# using +options+ from the mount point. By default a new servlet
|
1198
|
+
# instance is created for every call.
|
1199
|
+
def get_instance(server, *options); end
|
1200
|
+
end
|
1201
|
+
end
|
1202
|
+
|
1203
|
+
# Servlet for handling CGI scripts
|
1204
|
+
#
|
1205
|
+
# Example:
|
1206
|
+
#
|
1207
|
+
# server.mount('/cgi/my_script', WEBrick::HTTPServlet::CGIHandler,
|
1208
|
+
# '/path/to/my_script')
|
1209
|
+
class WEBrick::HTTPServlet::CGIHandler < ::WEBrick::HTTPServlet::AbstractServlet
|
1210
|
+
# Creates a new CGI script servlet for the script at +name+
|
1211
|
+
#
|
1212
|
+
# @return [CGIHandler] a new instance of CGIHandler
|
1213
|
+
def initialize(server, name); end
|
1214
|
+
|
1215
|
+
# :stopdoc:
|
1216
|
+
#
|
1217
|
+
# @raise [HTTPStatus::InternalServerError]
|
1218
|
+
def do_GET(req, res); end
|
1219
|
+
|
1220
|
+
# :stopdoc:
|
1221
|
+
#
|
1222
|
+
# @raise [HTTPStatus::InternalServerError]
|
1223
|
+
def do_POST(req, res); end
|
1224
|
+
end
|
1225
|
+
|
1226
|
+
WEBrick::HTTPServlet::CGIHandler::CGIRunnerArray = T.let(T.unsafe(nil), Array)
|
1227
|
+
|
1228
|
+
# Servlet for serving a single file. You probably want to use the
|
1229
|
+
# FileHandler servlet instead as it handles directories and fancy indexes.
|
1230
|
+
#
|
1231
|
+
# Example:
|
1232
|
+
#
|
1233
|
+
# server.mount('/my_page.txt', WEBrick::HTTPServlet::DefaultFileHandler,
|
1234
|
+
# '/path/to/my_page.txt')
|
1235
|
+
#
|
1236
|
+
# This servlet handles If-Modified-Since and Range requests.
|
1237
|
+
class WEBrick::HTTPServlet::DefaultFileHandler < ::WEBrick::HTTPServlet::AbstractServlet
|
1238
|
+
# Creates a DefaultFileHandler instance for the file at +local_path+.
|
1239
|
+
#
|
1240
|
+
# @return [DefaultFileHandler] a new instance of DefaultFileHandler
|
1241
|
+
def initialize(server, local_path); end
|
1242
|
+
|
1243
|
+
# :stopdoc:
|
1244
|
+
def do_GET(req, res); end
|
1245
|
+
|
1246
|
+
def make_partial_content(req, res, filename, filesize); end
|
1247
|
+
|
1248
|
+
# returns a lambda for webrick/httpresponse.rb send_body_proc
|
1249
|
+
def multipart_body(body, parts, boundary, mtype, filesize); end
|
1250
|
+
|
1251
|
+
# @return [Boolean]
|
1252
|
+
def not_modified?(req, res, mtime, etag); end
|
1253
|
+
|
1254
|
+
def prepare_range(range, filesize); end
|
1255
|
+
end
|
1256
|
+
|
1257
|
+
# ERBHandler evaluates an ERB file and returns the result. This handler
|
1258
|
+
# is automatically used if there are .rhtml files in a directory served by
|
1259
|
+
# the FileHandler.
|
1260
|
+
#
|
1261
|
+
# ERBHandler supports GET and POST methods.
|
1262
|
+
#
|
1263
|
+
# The ERB file is evaluated with the local variables +servlet_request+ and
|
1264
|
+
# +servlet_response+ which are a WEBrick::HTTPRequest and
|
1265
|
+
# WEBrick::HTTPResponse respectively.
|
1266
|
+
#
|
1267
|
+
# Example .rhtml file:
|
1268
|
+
#
|
1269
|
+
# Request to <%= servlet_request.request_uri %>
|
1270
|
+
#
|
1271
|
+
# Query params <%= servlet_request.query.inspect %>
|
1272
|
+
class WEBrick::HTTPServlet::ERBHandler < ::WEBrick::HTTPServlet::AbstractServlet
|
1273
|
+
# Creates a new ERBHandler on +server+ that will evaluate and serve the
|
1274
|
+
# ERB file +name+
|
1275
|
+
#
|
1276
|
+
# @return [ERBHandler] a new instance of ERBHandler
|
1277
|
+
def initialize(server, name); end
|
1278
|
+
|
1279
|
+
# Handles GET requests
|
1280
|
+
def do_GET(req, res); end
|
1281
|
+
|
1282
|
+
# Handles GET requests
|
1283
|
+
#
|
1284
|
+
# Handles POST requests
|
1285
|
+
def do_POST(req, res); end
|
1286
|
+
|
1287
|
+
private
|
1288
|
+
|
1289
|
+
# Evaluates +erb+ providing +servlet_request+ and +servlet_response+ as
|
1290
|
+
# local variables.
|
1291
|
+
def evaluate(erb, servlet_request, servlet_response); end
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
# Serves a directory including fancy indexing and a variety of other
|
1295
|
+
# options.
|
1296
|
+
#
|
1297
|
+
# Example:
|
1298
|
+
#
|
1299
|
+
# server.mount('/assets', WEBrick::HTTPServlet::FileHandler,
|
1300
|
+
# '/path/to/assets')
|
1301
|
+
class WEBrick::HTTPServlet::FileHandler < ::WEBrick::HTTPServlet::AbstractServlet
|
1302
|
+
# Creates a FileHandler servlet on +server+ that serves files starting
|
1303
|
+
# at directory +root+
|
1304
|
+
#
|
1305
|
+
# +options+ may be a Hash containing keys from
|
1306
|
+
# WEBrick::Config::FileHandler or +true+ or +false+.
|
1307
|
+
#
|
1308
|
+
# If +options+ is true or false then +:FancyIndexing+ is enabled or
|
1309
|
+
# disabled respectively.
|
1310
|
+
#
|
1311
|
+
# @return [FileHandler] a new instance of FileHandler
|
1312
|
+
def initialize(server, root, options = T.unsafe(nil), default = T.unsafe(nil)); end
|
1313
|
+
|
1314
|
+
def do_GET(req, res); end
|
1315
|
+
def do_OPTIONS(req, res); end
|
1316
|
+
def do_POST(req, res); end
|
1317
|
+
def service(req, res); end
|
1318
|
+
|
1319
|
+
# :stopdoc:
|
1320
|
+
def set_filesystem_encoding(str); end
|
1321
|
+
|
1322
|
+
private
|
1323
|
+
|
1324
|
+
def call_callback(callback_name, req, res); end
|
1325
|
+
def check_filename(req, res, name); end
|
1326
|
+
|
1327
|
+
# @raise [HTTPStatus::NotFound]
|
1328
|
+
def exec_handler(req, res); end
|
1329
|
+
|
1330
|
+
def get_handler(req, res); end
|
1331
|
+
|
1332
|
+
# @return [Boolean]
|
1333
|
+
def nondisclosure_name?(name); end
|
1334
|
+
|
1335
|
+
def prevent_directory_traversal(req, res); end
|
1336
|
+
def search_file(req, res, basename); end
|
1337
|
+
def search_index_file(req, res); end
|
1338
|
+
def set_dir_list(req, res); end
|
1339
|
+
def set_filename(req, res); end
|
1340
|
+
def shift_path_info(req, res, path_info, base = T.unsafe(nil)); end
|
1341
|
+
|
1342
|
+
# @return [Boolean]
|
1343
|
+
def trailing_pathsep?(path); end
|
1344
|
+
|
1345
|
+
# @return [Boolean]
|
1346
|
+
def windows_ambiguous_name?(name); end
|
1347
|
+
|
1348
|
+
class << self
|
1349
|
+
# Allow custom handling of requests for files with +suffix+ by class
|
1350
|
+
# +handler+
|
1351
|
+
def add_handler(suffix, handler); end
|
1352
|
+
|
1353
|
+
# Remove custom handling of requests for files with +suffix+
|
1354
|
+
def remove_handler(suffix); end
|
1355
|
+
end
|
1356
|
+
end
|
1357
|
+
|
1358
|
+
# This module is used to manager HTTP status codes.
|
1359
|
+
#
|
1360
|
+
# See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for more
|
1361
|
+
# information.
|
1362
|
+
module WEBrick::HTTPStatus
|
1363
|
+
private
|
1364
|
+
|
1365
|
+
# Is +code+ a client error status?
|
1366
|
+
#
|
1367
|
+
# @return [Boolean]
|
1368
|
+
def client_error?(code); end
|
1369
|
+
|
1370
|
+
# Is +code+ an error status?
|
1371
|
+
#
|
1372
|
+
# @return [Boolean]
|
1373
|
+
def error?(code); end
|
1374
|
+
|
1375
|
+
# Is +code+ an informational status?
|
1376
|
+
#
|
1377
|
+
# @return [Boolean]
|
1378
|
+
def info?(code); end
|
1379
|
+
|
1380
|
+
# Returns the description corresponding to the HTTP status +code+
|
1381
|
+
#
|
1382
|
+
# WEBrick::HTTPStatus.reason_phrase 404
|
1383
|
+
# => "Not Found"
|
1384
|
+
def reason_phrase(code); end
|
1385
|
+
|
1386
|
+
# Is +code+ a redirection status?
|
1387
|
+
#
|
1388
|
+
# @return [Boolean]
|
1389
|
+
def redirect?(code); end
|
1390
|
+
|
1391
|
+
# Is +code+ a server error status?
|
1392
|
+
#
|
1393
|
+
# @return [Boolean]
|
1394
|
+
def server_error?(code); end
|
1395
|
+
|
1396
|
+
# Is +code+ a successful status?
|
1397
|
+
#
|
1398
|
+
# @return [Boolean]
|
1399
|
+
def success?(code); end
|
1400
|
+
|
1401
|
+
class << self
|
1402
|
+
# Returns the status class corresponding to +code+
|
1403
|
+
#
|
1404
|
+
# WEBrick::HTTPStatus[302]
|
1405
|
+
# => WEBrick::HTTPStatus::NotFound
|
1406
|
+
def [](code); end
|
1407
|
+
|
1408
|
+
# Is +code+ a client error status?
|
1409
|
+
#
|
1410
|
+
# @return [Boolean]
|
1411
|
+
def client_error?(code); end
|
1412
|
+
|
1413
|
+
# Is +code+ an error status?
|
1414
|
+
#
|
1415
|
+
# @return [Boolean]
|
1416
|
+
def error?(code); end
|
1417
|
+
|
1418
|
+
# Is +code+ an informational status?
|
1419
|
+
#
|
1420
|
+
# @return [Boolean]
|
1421
|
+
def info?(code); end
|
1422
|
+
|
1423
|
+
# Returns the description corresponding to the HTTP status +code+
|
1424
|
+
#
|
1425
|
+
# WEBrick::HTTPStatus.reason_phrase 404
|
1426
|
+
# => "Not Found"
|
1427
|
+
def reason_phrase(code); end
|
1428
|
+
|
1429
|
+
# Is +code+ a redirection status?
|
1430
|
+
#
|
1431
|
+
# @return [Boolean]
|
1432
|
+
def redirect?(code); end
|
1433
|
+
|
1434
|
+
# Is +code+ a server error status?
|
1435
|
+
#
|
1436
|
+
# @return [Boolean]
|
1437
|
+
def server_error?(code); end
|
1438
|
+
|
1439
|
+
# Is +code+ a successful status?
|
1440
|
+
#
|
1441
|
+
# @return [Boolean]
|
1442
|
+
def success?(code); end
|
1443
|
+
end
|
1444
|
+
end
|
1445
|
+
|
1446
|
+
# Root of the HTTP status class hierarchy
|
1447
|
+
class WEBrick::HTTPStatus::Status < ::StandardError
|
1448
|
+
# Returns the HTTP status code
|
1449
|
+
def code; end
|
1450
|
+
|
1451
|
+
# Returns the HTTP status description
|
1452
|
+
def reason_phrase; end
|
1453
|
+
|
1454
|
+
# Returns the HTTP status code
|
1455
|
+
def to_i; end
|
1456
|
+
|
1457
|
+
class << self
|
1458
|
+
def code; end
|
1459
|
+
def reason_phrase; end
|
1460
|
+
end
|
1461
|
+
end
|
1462
|
+
|
1463
|
+
# HTTPUtils provides utility methods for working with the HTTP protocol.
|
1464
|
+
#
|
1465
|
+
# This module is generally used internally by WEBrick
|
1466
|
+
module WEBrick::HTTPUtils
|
1467
|
+
private
|
1468
|
+
|
1469
|
+
def _escape(str, regex); end
|
1470
|
+
|
1471
|
+
# :stopdoc:
|
1472
|
+
def _make_regex(str); end
|
1473
|
+
|
1474
|
+
def _make_regex!(str); end
|
1475
|
+
def _unescape(str, regex); end
|
1476
|
+
|
1477
|
+
# Removes quotes and escapes from +str+
|
1478
|
+
def dequote(str); end
|
1479
|
+
|
1480
|
+
# Escapes HTTP reserved and unwise characters in +str+
|
1481
|
+
def escape(str); end
|
1482
|
+
|
1483
|
+
# Escapes 8 bit characters in +str+
|
1484
|
+
def escape8bit(str); end
|
1485
|
+
|
1486
|
+
# Escapes form reserved characters in +str+
|
1487
|
+
def escape_form(str); end
|
1488
|
+
|
1489
|
+
# Escapes path +str+
|
1490
|
+
def escape_path(str); end
|
1491
|
+
|
1492
|
+
# Loads Apache-compatible mime.types in +file+.
|
1493
|
+
def load_mime_types(file); end
|
1494
|
+
|
1495
|
+
# Returns the mime type of +filename+ from the list in +mime_tab+. If no
|
1496
|
+
# mime type was found application/octet-stream is returned.
|
1497
|
+
def mime_type(filename, mime_tab); end
|
1498
|
+
|
1499
|
+
# Normalizes a request path. Raises an exception if the path cannot be
|
1500
|
+
# normalized.
|
1501
|
+
def normalize_path(path); end
|
1502
|
+
|
1503
|
+
# Parses form data in +io+ with the given +boundary+
|
1504
|
+
def parse_form_data(io, boundary); end
|
1505
|
+
|
1506
|
+
# Parses an HTTP header +raw+ into a hash of header fields with an Array
|
1507
|
+
# of values.
|
1508
|
+
def parse_header(raw); end
|
1509
|
+
|
1510
|
+
# Parses the query component of a URI in +str+
|
1511
|
+
def parse_query(str); end
|
1512
|
+
|
1513
|
+
# Parses q values in +value+ as used in Accept headers.
|
1514
|
+
def parse_qvalues(value); end
|
1515
|
+
|
1516
|
+
# Parses a Range header value +ranges_specifier+
|
1517
|
+
def parse_range_header(ranges_specifier); end
|
1518
|
+
|
1519
|
+
# Quotes and escapes quotes in +str+
|
1520
|
+
def quote(str); end
|
1521
|
+
|
1522
|
+
# Splits a header value +str+ according to HTTP specification.
|
1523
|
+
def split_header_value(str); end
|
1524
|
+
|
1525
|
+
# Unescapes HTTP reserved and unwise characters in +str+
|
1526
|
+
def unescape(str); end
|
1527
|
+
|
1528
|
+
# Unescapes form reserved characters in +str+
|
1529
|
+
def unescape_form(str); end
|
1530
|
+
|
1531
|
+
class << self
|
1532
|
+
def _escape(str, regex); end
|
1533
|
+
|
1534
|
+
# :stopdoc:
|
1535
|
+
def _make_regex(str); end
|
1536
|
+
|
1537
|
+
def _make_regex!(str); end
|
1538
|
+
def _unescape(str, regex); end
|
1539
|
+
|
1540
|
+
# Removes quotes and escapes from +str+
|
1541
|
+
def dequote(str); end
|
1542
|
+
|
1543
|
+
# Escapes HTTP reserved and unwise characters in +str+
|
1544
|
+
def escape(str); end
|
1545
|
+
|
1546
|
+
# Escapes 8 bit characters in +str+
|
1547
|
+
def escape8bit(str); end
|
1548
|
+
|
1549
|
+
# Escapes form reserved characters in +str+
|
1550
|
+
def escape_form(str); end
|
1551
|
+
|
1552
|
+
# Escapes path +str+
|
1553
|
+
def escape_path(str); end
|
1554
|
+
|
1555
|
+
# Loads Apache-compatible mime.types in +file+.
|
1556
|
+
def load_mime_types(file); end
|
1557
|
+
|
1558
|
+
# Returns the mime type of +filename+ from the list in +mime_tab+. If no
|
1559
|
+
# mime type was found application/octet-stream is returned.
|
1560
|
+
def mime_type(filename, mime_tab); end
|
1561
|
+
|
1562
|
+
# Normalizes a request path. Raises an exception if the path cannot be
|
1563
|
+
# normalized.
|
1564
|
+
def normalize_path(path); end
|
1565
|
+
|
1566
|
+
# Parses form data in +io+ with the given +boundary+
|
1567
|
+
def parse_form_data(io, boundary); end
|
1568
|
+
|
1569
|
+
# Parses an HTTP header +raw+ into a hash of header fields with an Array
|
1570
|
+
# of values.
|
1571
|
+
def parse_header(raw); end
|
1572
|
+
|
1573
|
+
# Parses the query component of a URI in +str+
|
1574
|
+
def parse_query(str); end
|
1575
|
+
|
1576
|
+
# Parses q values in +value+ as used in Accept headers.
|
1577
|
+
def parse_qvalues(value); end
|
1578
|
+
|
1579
|
+
# Parses a Range header value +ranges_specifier+
|
1580
|
+
def parse_range_header(ranges_specifier); end
|
1581
|
+
|
1582
|
+
# Quotes and escapes quotes in +str+
|
1583
|
+
def quote(str); end
|
1584
|
+
|
1585
|
+
# Splits a header value +str+ according to HTTP specification.
|
1586
|
+
def split_header_value(str); end
|
1587
|
+
|
1588
|
+
# Unescapes HTTP reserved and unwise characters in +str+
|
1589
|
+
def unescape(str); end
|
1590
|
+
|
1591
|
+
# Unescapes form reserved characters in +str+
|
1592
|
+
def unescape_form(str); end
|
1593
|
+
end
|
1594
|
+
end
|
1595
|
+
|
1596
|
+
# Stores multipart form data. FormData objects are created when
|
1597
|
+
# WEBrick::HTTPUtils.parse_form_data is called.
|
1598
|
+
class WEBrick::HTTPUtils::FormData < ::String
|
1599
|
+
# Creates a new FormData object.
|
1600
|
+
#
|
1601
|
+
# +args+ is an Array of form data entries. One FormData will be created
|
1602
|
+
# for each entry.
|
1603
|
+
#
|
1604
|
+
# This is called by WEBrick::HTTPUtils.parse_form_data for you
|
1605
|
+
#
|
1606
|
+
# @return [FormData] a new instance of FormData
|
1607
|
+
def initialize(*args); end
|
1608
|
+
|
1609
|
+
# Adds +str+ to this FormData which may be the body, a header or a
|
1610
|
+
# header entry.
|
1611
|
+
#
|
1612
|
+
# This is called by WEBrick::HTTPUtils.parse_form_data for you
|
1613
|
+
def <<(str); end
|
1614
|
+
|
1615
|
+
# Retrieves the header at the first entry in +key+
|
1616
|
+
def [](*key); end
|
1617
|
+
|
1618
|
+
# Adds +data+ at the end of the chain of entries
|
1619
|
+
#
|
1620
|
+
# This is called by WEBrick::HTTPUtils.parse_form_data for you.
|
1621
|
+
def append_data(data); end
|
1622
|
+
|
1623
|
+
# Yields each entry in this FormData
|
1624
|
+
def each_data; end
|
1625
|
+
|
1626
|
+
# The filename of the form data part
|
1627
|
+
def filename; end
|
1628
|
+
|
1629
|
+
# The filename of the form data part
|
1630
|
+
def filename=(_arg0); end
|
1631
|
+
|
1632
|
+
# Returns all the FormData as an Array
|
1633
|
+
def list; end
|
1634
|
+
|
1635
|
+
# The name of the form data part
|
1636
|
+
def name; end
|
1637
|
+
|
1638
|
+
# The name of the form data part
|
1639
|
+
def name=(_arg0); end
|
1640
|
+
|
1641
|
+
def next_data=(_arg0); end
|
1642
|
+
|
1643
|
+
# Returns all the FormData as an Array
|
1644
|
+
#
|
1645
|
+
# A FormData will behave like an Array
|
1646
|
+
def to_ary; end
|
1647
|
+
|
1648
|
+
# This FormData's body
|
1649
|
+
def to_s; end
|
1650
|
+
|
1651
|
+
protected
|
1652
|
+
|
1653
|
+
def next_data; end
|
1654
|
+
end
|
1655
|
+
|
1656
|
+
module WEBrick::Utils
|
1657
|
+
private
|
1658
|
+
|
1659
|
+
# Creates TCP server sockets bound to +address+:+port+ and returns them.
|
1660
|
+
#
|
1661
|
+
# It will create IPV4 and IPV6 sockets on all interfaces.
|
1662
|
+
def create_listeners(address, port); end
|
1663
|
+
|
1664
|
+
# The server hostname
|
1665
|
+
def getservername; end
|
1666
|
+
|
1667
|
+
# Generates a random string of length +len+
|
1668
|
+
def random_string(len); end
|
1669
|
+
|
1670
|
+
# Sets the close on exec flag for +io+
|
1671
|
+
def set_close_on_exec(io); end
|
1672
|
+
|
1673
|
+
# Sets IO operations on +io+ to be non-blocking
|
1674
|
+
def set_non_blocking(io); end
|
1675
|
+
|
1676
|
+
# Changes the process's uid and gid to the ones of +user+
|
1677
|
+
def su(user); end
|
1678
|
+
|
1679
|
+
# Executes the passed block and raises +exception+ if execution takes more
|
1680
|
+
# than +seconds+.
|
1681
|
+
#
|
1682
|
+
# If +seconds+ is zero or nil, simply executes the block
|
1683
|
+
def timeout(seconds, exception = T.unsafe(nil)); end
|
1684
|
+
|
1685
|
+
class << self
|
1686
|
+
# Creates TCP server sockets bound to +address+:+port+ and returns them.
|
1687
|
+
#
|
1688
|
+
# It will create IPV4 and IPV6 sockets on all interfaces.
|
1689
|
+
def create_listeners(address, port); end
|
1690
|
+
|
1691
|
+
# The server hostname
|
1692
|
+
def getservername; end
|
1693
|
+
|
1694
|
+
# Generates a random string of length +len+
|
1695
|
+
def random_string(len); end
|
1696
|
+
|
1697
|
+
# Sets the close on exec flag for +io+
|
1698
|
+
def set_close_on_exec(io); end
|
1699
|
+
|
1700
|
+
# Sets IO operations on +io+ to be non-blocking
|
1701
|
+
def set_non_blocking(io); end
|
1702
|
+
|
1703
|
+
# Changes the process's uid and gid to the ones of +user+
|
1704
|
+
def su(user); end
|
1705
|
+
|
1706
|
+
# Executes the passed block and raises +exception+ if execution takes more
|
1707
|
+
# than +seconds+.
|
1708
|
+
#
|
1709
|
+
# If +seconds+ is zero or nil, simply executes the block
|
1710
|
+
def timeout(seconds, exception = T.unsafe(nil)); end
|
1711
|
+
end
|
1712
|
+
end
|
1713
|
+
|
1714
|
+
# Class used to manage timeout handlers across multiple threads.
|
1715
|
+
#
|
1716
|
+
# Timeout handlers should be managed by using the class methods which are
|
1717
|
+
# synchronized.
|
1718
|
+
#
|
1719
|
+
# id = TimeoutHandler.register(10, Timeout::Error)
|
1720
|
+
# begin
|
1721
|
+
# sleep 20
|
1722
|
+
# puts 'foo'
|
1723
|
+
# ensure
|
1724
|
+
# TimeoutHandler.cancel(id)
|
1725
|
+
# end
|
1726
|
+
#
|
1727
|
+
# will raise Timeout::Error
|
1728
|
+
#
|
1729
|
+
# id = TimeoutHandler.register(10, Timeout::Error)
|
1730
|
+
# begin
|
1731
|
+
# sleep 5
|
1732
|
+
# puts 'foo'
|
1733
|
+
# ensure
|
1734
|
+
# TimeoutHandler.cancel(id)
|
1735
|
+
# end
|
1736
|
+
#
|
1737
|
+
# will print 'foo'
|
1738
|
+
class WEBrick::Utils::TimeoutHandler
|
1739
|
+
include ::Singleton
|
1740
|
+
extend ::Singleton::SingletonClassMethods
|
1741
|
+
|
1742
|
+
# Creates a new TimeoutHandler. You should use ::register and ::cancel
|
1743
|
+
# instead of creating the timeout handler directly.
|
1744
|
+
#
|
1745
|
+
# @return [TimeoutHandler] a new instance of TimeoutHandler
|
1746
|
+
def initialize; end
|
1747
|
+
|
1748
|
+
# Cancels the timeout handler +id+
|
1749
|
+
def cancel(thread, id); end
|
1750
|
+
|
1751
|
+
# Interrupts the timeout handler +id+ and raises +exception+
|
1752
|
+
def interrupt(thread, id, exception); end
|
1753
|
+
|
1754
|
+
# Registers a new timeout handler
|
1755
|
+
#
|
1756
|
+
# +time+:: Timeout in seconds
|
1757
|
+
# +exception+:: Exception to raise when timeout elapsed
|
1758
|
+
def register(thread, time, exception); end
|
1759
|
+
|
1760
|
+
def terminate; end
|
1761
|
+
|
1762
|
+
private
|
1763
|
+
|
1764
|
+
def watch; end
|
1765
|
+
def watcher; end
|
1766
|
+
|
1767
|
+
class << self
|
1768
|
+
# Cancels the timeout handler +id+
|
1769
|
+
def cancel(id); end
|
1770
|
+
|
1771
|
+
# Registers a new timeout handler
|
1772
|
+
#
|
1773
|
+
# +time+:: Timeout in seconds
|
1774
|
+
# +exception+:: Exception to raise when timeout elapsed
|
1775
|
+
def register(seconds, exception); end
|
1776
|
+
|
1777
|
+
def terminate; end
|
1778
|
+
end
|
1779
|
+
end
|