webrick 1.8.2 → 1.9.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/README.md +2 -0
  4. data/lib/webrick/cgi.rb +1 -1
  5. data/lib/webrick/httpauth/authenticator.rb +4 -4
  6. data/lib/webrick/httpauth/htgroup.rb +1 -1
  7. data/lib/webrick/httpauth/htpasswd.rb +2 -2
  8. data/lib/webrick/httpproxy.rb +4 -4
  9. data/lib/webrick/httprequest.rb +6 -6
  10. data/lib/webrick/httpresponse.rb +1 -1
  11. data/lib/webrick/httpserver.rb +2 -2
  12. data/lib/webrick/httpservlet/abstract.rb +1 -1
  13. data/lib/webrick/httpservlet/filehandler.rb +6 -6
  14. data/lib/webrick/httputils.rb +2 -2
  15. data/lib/webrick/server.rb +1 -1
  16. data/lib/webrick/version.rb +1 -1
  17. data/sig/accesslog.rbs +24 -0
  18. data/sig/cgi.rbs +92 -0
  19. data/sig/compat.rbs +18 -0
  20. data/sig/config.rbs +17 -0
  21. data/sig/cookie.rbs +37 -0
  22. data/sig/htmlutils.rbs +5 -0
  23. data/sig/httpauth/authenticator.rbs +55 -0
  24. data/sig/httpauth/basicauth.rbs +29 -0
  25. data/sig/httpauth/digestauth.rbs +85 -0
  26. data/sig/httpauth/htdigest.rbs +31 -0
  27. data/sig/httpauth/htgroup.rbs +21 -0
  28. data/sig/httpauth/htpasswd.rbs +31 -0
  29. data/sig/httpauth/userdb.rbs +13 -0
  30. data/sig/httpauth.rbs +13 -0
  31. data/sig/httpproxy.rbs +61 -0
  32. data/sig/httprequest.rbs +167 -0
  33. data/sig/httpresponse.rbs +117 -0
  34. data/sig/https.rbs +49 -0
  35. data/sig/httpserver.rbs +71 -0
  36. data/sig/httpservlet/abstract.rbs +36 -0
  37. data/sig/httpservlet/cgi_runner.rbs +3 -0
  38. data/sig/httpservlet/cgihandler.rbs +23 -0
  39. data/sig/httpservlet/erbhandler.rbs +17 -0
  40. data/sig/httpservlet/filehandler.rbs +76 -0
  41. data/sig/httpservlet/prochandler.rbs +21 -0
  42. data/sig/httpservlet.rbs +4 -0
  43. data/sig/httpstatus.rbs +255 -0
  44. data/sig/httputils.rbs +116 -0
  45. data/sig/httpversion.rbs +17 -0
  46. data/sig/log.rbs +93 -0
  47. data/sig/manifest.yaml +8 -0
  48. data/sig/server.rbs +57 -0
  49. data/sig/ssl.rbs +19 -0
  50. data/sig/utils.rbs +122 -0
  51. data/sig/version.rbs +3 -0
  52. data/webrick.gemspec +35 -0
  53. metadata +43 -5
@@ -0,0 +1,76 @@
1
+ module WEBrick
2
+ module HTTPServlet
3
+ class DefaultFileHandler < AbstractServlet
4
+ @local_path: String
5
+
6
+ def initialize: (HTTPServer server, String local_path) -> void
7
+
8
+ def do_GET: (HTTPRequest req, HTTPResponse res) -> void
9
+
10
+ def not_modified?: (HTTPRequest req, HTTPResponse res, Time mtime, String etag) -> bool
11
+
12
+ # returns a lambda for webrick/httpresponse.rb send_body_proc
13
+ def multipart_body: (File body, Array[[Numeric, Numeric]] parts, String boundary, String mtype, Integer filesize) -> HTTPResponse::_CallableBody
14
+
15
+ def make_partial_content: (HTTPRequest req, HTTPResponse res, String filename, Integer filesize) -> void
16
+
17
+ def prepare_range: (Range[Integer] range, Integer filesize) -> [Numeric, Numeric]
18
+ end
19
+
20
+ class FileHandler < AbstractServlet
21
+ @config: AbstractServlet::_Config
22
+
23
+ @logger: Log
24
+
25
+ @root: String
26
+
27
+ @options: Hash[Symbol, untyped]
28
+
29
+ HandlerTable: Hash[String, singleton(AbstractServlet)]
30
+
31
+ def self.add_handler: (String suffix, singleton(AbstractServlet) handler) -> singleton(AbstractServlet)
32
+
33
+ def self.remove_handler: (String suffix) -> singleton(AbstractServlet)
34
+
35
+ def initialize: (HTTPServer server, String root, ?Hash[Symbol, untyped] options, ?Hash[Symbol, untyped] default) -> void
36
+
37
+ def set_filesystem_encoding: (String str) -> String
38
+
39
+ def service: (HTTPRequest req, HTTPResponse res) -> void
40
+
41
+ def do_GET: (HTTPRequest req, HTTPResponse res) -> void
42
+
43
+ def do_POST: (HTTPRequest req, HTTPResponse res) -> void
44
+
45
+ def do_OPTIONS: (HTTPRequest req, HTTPResponse res) -> void
46
+
47
+ private
48
+
49
+ def trailing_pathsep?: (String path) -> bool
50
+
51
+ def prevent_directory_traversal: (HTTPRequest req, HTTPResponse res) -> void
52
+
53
+ def exec_handler: (HTTPRequest req, HTTPResponse res) -> bool
54
+
55
+ def get_handler: (HTTPRequest req, HTTPResponse res) -> singleton(AbstractServlet)
56
+
57
+ def set_filename: (HTTPRequest req, HTTPResponse res) -> bool
58
+
59
+ def check_filename: (HTTPRequest req, HTTPResponse res, String name) -> void
60
+
61
+ def shift_path_info: (HTTPRequest req, HTTPResponse res, String path_info, ?String? base) -> void
62
+
63
+ def search_index_file: (HTTPRequest req, HTTPResponse res) -> String?
64
+
65
+ def search_file: (HTTPRequest req, HTTPResponse res, String basename) -> String?
66
+
67
+ def call_callback: (Symbol callback_name, HTTPRequest req, HTTPResponse res) -> void
68
+
69
+ def windows_ambiguous_name?: (String name) -> bool
70
+
71
+ def nondisclosure_name?: (String name) -> bool
72
+
73
+ def set_dir_list: (HTTPRequest req, HTTPResponse res) -> void
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,21 @@
1
+ module WEBrick
2
+ module HTTPServlet
3
+ class ProcHandler < AbstractServlet
4
+ interface _Callable
5
+ def call: (WEBrick::HTTPRequest, WEBrick::HTTPResponse) -> void
6
+ end
7
+
8
+ @proc: _Callable
9
+
10
+ def get_instance: (HTTPServer server, *untyped options) -> self
11
+
12
+ def initialize: (_Callable proc) -> void
13
+
14
+ def do_GET: (HTTPRequest request, HTTPResponse response) -> void
15
+
16
+ alias do_POST do_GET
17
+
18
+ alias do_PUT do_GET
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+ module WEBrick
2
+ module HTTPServlet
3
+ end
4
+ end
@@ -0,0 +1,255 @@
1
+ module WEBrick
2
+ #
3
+ # This module is used to manager HTTP status codes.
4
+ #
5
+ # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for more
6
+ # information.
7
+ module HTTPStatus
8
+ #
9
+ # Root of the HTTP status class hierarchy
10
+ class Status < StandardError
11
+ attr_reader self.code: Integer
12
+
13
+ attr_reader self.reason_phrase: String
14
+
15
+ # Returns the HTTP status code
16
+ def code: () -> Integer
17
+
18
+ # Returns the HTTP status description
19
+ def reason_phrase: () -> String
20
+
21
+ alias to_i code
22
+ end
23
+
24
+ # Root of the HTTP info statuses
25
+ class Info < Status
26
+ end
27
+
28
+ # Root of the HTTP success statuses
29
+ class Success < Status
30
+ end
31
+
32
+ # Root of the HTTP redirect statuses
33
+ class Redirect < Status
34
+ end
35
+
36
+ # Root of the HTTP error statuses
37
+ class Error < Status
38
+ end
39
+
40
+ # Root of the HTTP client error statuses
41
+ class ClientError < Error
42
+ end
43
+
44
+ # Root of the HTTP server error statuses
45
+ class ServerError < Error
46
+ end
47
+
48
+ class EOFError < StandardError
49
+ end
50
+
51
+ # HTTP status codes and descriptions
52
+ StatusMessage: Hash[Integer, String]
53
+
54
+ # Maps a status code to the corresponding Status class
55
+ CodeToError: Hash[Integer, singleton(Status)]
56
+
57
+ # WEBrick::HTTPStatus::constants.grep(/\ARC_/).map{"#{_1}: #{WEBrick::HTTPStatus.const_get(_1)}"}
58
+
59
+ RC_CONTINUE: 100
60
+ RC_SWITCHING_PROTOCOLS: 101
61
+ RC_OK: 200
62
+ RC_CREATED: 201
63
+ RC_ACCEPTED: 202
64
+ RC_NON_AUTHORITATIVE_INFORMATION: 203
65
+ RC_NO_CONTENT: 204
66
+ RC_RESET_CONTENT: 205
67
+ RC_PARTIAL_CONTENT: 206
68
+ RC_MULTI_STATUS: 207
69
+ RC_MULTIPLE_CHOICES: 300
70
+ RC_MOVED_PERMANENTLY: 301
71
+ RC_FOUND: 302
72
+ RC_SEE_OTHER: 303
73
+ RC_NOT_MODIFIED: 304
74
+ RC_USE_PROXY: 305
75
+ RC_TEMPORARY_REDIRECT: 307
76
+ RC_BAD_REQUEST: 400
77
+ RC_UNAUTHORIZED: 401
78
+ RC_PAYMENT_REQUIRED: 402
79
+ RC_FORBIDDEN: 403
80
+ RC_NOT_FOUND: 404
81
+ RC_METHOD_NOT_ALLOWED: 405
82
+ RC_NOT_ACCEPTABLE: 406
83
+ RC_PROXY_AUTHENTICATION_REQUIRED: 407
84
+ RC_REQUEST_TIMEOUT: 408
85
+ RC_CONFLICT: 409
86
+ RC_GONE: 410
87
+ RC_PRECONDITION_FAILED: 412
88
+ RC_LENGTH_REQUIRED: 411
89
+ RC_REQUEST_ENTITY_TOO_LARGE: 413
90
+ RC_REQUEST_URI_TOO_LARGE: 414
91
+ RC_UNSUPPORTED_MEDIA_TYPE: 415
92
+ RC_EXPECTATION_FAILED: 417
93
+ RC_UNPROCESSABLE_ENTITY: 422
94
+ RC_LOCKED: 423
95
+ RC_FAILED_DEPENDENCY: 424
96
+ RC_REQUEST_RANGE_NOT_SATISFIABLE: 416
97
+ RC_UPGRADE_REQUIRED: 426
98
+ RC_PRECONDITION_REQUIRED: 428
99
+ RC_TOO_MANY_REQUESTS: 429
100
+ RC_REQUEST_HEADER_FIELDS_TOO_LARGE: 431
101
+ RC_UNAVAILABLE_FOR_LEGAL_REASONS: 451
102
+ RC_INTERNAL_SERVER_ERROR: 500
103
+ RC_NOT_IMPLEMENTED: 501
104
+ RC_BAD_GATEWAY: 502
105
+ RC_SERVICE_UNAVAILABLE: 503
106
+ RC_GATEWAY_TIMEOUT: 504
107
+ RC_HTTP_VERSION_NOT_SUPPORTED: 505
108
+ RC_INSUFFICIENT_STORAGE: 507
109
+ RC_NETWORK_AUTHENTICATION_REQUIRED: 511
110
+
111
+ # WEBrick::HTTPStatus::CodeToError.each_value.map{"class #{_1.name.split(/::/).last} < #{_1.superclass.name.split(/::/).last}\nend"}
112
+
113
+ class Continue < Info
114
+ end
115
+ class SwitchingProtocols < Info
116
+ end
117
+ class OK < Success
118
+ end
119
+ class Created < Success
120
+ end
121
+ class Accepted < Success
122
+ end
123
+ class NonAuthoritativeInformation < Success
124
+ end
125
+ class NoContent < Success
126
+ end
127
+ class ResetContent < Success
128
+ end
129
+ class PartialContent < Success
130
+ end
131
+ class MultiStatus < Success
132
+ end
133
+ class MultipleChoices < Redirect
134
+ end
135
+ class MovedPermanently < Redirect
136
+ end
137
+ class Found < Redirect
138
+ end
139
+ class SeeOther < Redirect
140
+ end
141
+ class NotModified < Redirect
142
+ end
143
+ class UseProxy < Redirect
144
+ end
145
+ class TemporaryRedirect < Redirect
146
+ end
147
+ class BadRequest < ClientError
148
+ end
149
+ class Unauthorized < ClientError
150
+ end
151
+ class PaymentRequired < ClientError
152
+ end
153
+ class Forbidden < ClientError
154
+ end
155
+ class NotFound < ClientError
156
+ end
157
+ class MethodNotAllowed < ClientError
158
+ end
159
+ class NotAcceptable < ClientError
160
+ end
161
+ class ProxyAuthenticationRequired < ClientError
162
+ end
163
+ class RequestTimeout < ClientError
164
+ end
165
+ class Conflict < ClientError
166
+ end
167
+ class Gone < ClientError
168
+ end
169
+ class LengthRequired < ClientError
170
+ end
171
+ class PreconditionFailed < ClientError
172
+ end
173
+ class RequestEntityTooLarge < ClientError
174
+ end
175
+ class RequestURITooLarge < ClientError
176
+ end
177
+ class UnsupportedMediaType < ClientError
178
+ end
179
+ class RequestRangeNotSatisfiable < ClientError
180
+ end
181
+ class ExpectationFailed < ClientError
182
+ end
183
+ class UnprocessableEntity < ClientError
184
+ end
185
+ class Locked < ClientError
186
+ end
187
+ class FailedDependency < ClientError
188
+ end
189
+ class UpgradeRequired < ClientError
190
+ end
191
+ class PreconditionRequired < ClientError
192
+ end
193
+ class TooManyRequests < ClientError
194
+ end
195
+ class RequestHeaderFieldsTooLarge < ClientError
196
+ end
197
+ class UnavailableForLegalReasons < ClientError
198
+ end
199
+ class InternalServerError < ServerError
200
+ end
201
+ class NotImplemented < ServerError
202
+ end
203
+ class BadGateway < ServerError
204
+ end
205
+ class ServiceUnavailable < ServerError
206
+ end
207
+ class GatewayTimeout < ServerError
208
+ end
209
+ class HTTPVersionNotSupported < ServerError
210
+ end
211
+ class InsufficientStorage < ServerError
212
+ end
213
+ class NetworkAuthenticationRequired < ServerError
214
+ end
215
+
216
+ #
217
+ # Returns the description corresponding to the HTTP status +code+
218
+ #
219
+ # WEBrick::HTTPStatus.reason_phrase 404
220
+ # => "Not Found"
221
+ def self?.reason_phrase: (Integer code) -> String
222
+
223
+ #
224
+ # Is +code+ an informational status?
225
+ def self?.info?: (Integer code) -> bool
226
+
227
+ #
228
+ # Is +code+ a successful status?
229
+ def self?.success?: (Integer code) -> bool
230
+
231
+ #
232
+ # Is +code+ a redirection status?
233
+ def self?.redirect?: (Integer code) -> bool
234
+
235
+ #
236
+ # Is +code+ an error status?
237
+ def self?.error?: (Integer code) -> bool
238
+
239
+ #
240
+ # Is +code+ a client error status?
241
+ def self?.client_error?: (Integer code) -> bool
242
+
243
+ #
244
+ # Is +code+ a server error status?
245
+ def self?.server_error?: (Integer code) -> bool
246
+
247
+ #
248
+ # Returns the status class corresponding to +code+
249
+ #
250
+ # WEBrick::HTTPStatus[302]
251
+ # => WEBrick::HTTPStatus::NotFound
252
+ #
253
+ def self.[]: (Integer code) -> singleton(Status)
254
+ end
255
+ end
data/sig/httputils.rbs ADDED
@@ -0,0 +1,116 @@
1
+ module WEBrick
2
+ CR: String
3
+
4
+ LF: String
5
+
6
+ CRLF: String
7
+
8
+ module HTTPUtils
9
+ def self?.normalize_path: (String path) -> String
10
+
11
+ type mime_types = Hash[String, String]
12
+
13
+ DefaultMimeTypes: mime_types
14
+
15
+ def self?.load_mime_types: (string | _ToPath file) -> mime_types
16
+
17
+ def self?.mime_type: (String filename, mime_types mime_tab) -> String
18
+
19
+ class SplitHeader < Array[String]
20
+ def join: (?String separator) -> String
21
+ end
22
+
23
+ class CookieHeader < Array[String]
24
+ def join: (?String separator) -> String
25
+ end
26
+
27
+ HEADER_CLASSES: Hash[String, untyped]
28
+
29
+ def self?.parse_header: (String raw) -> Hash[String, Array[String]]
30
+
31
+ def self?.split_header_value: (String str) -> Array[String]
32
+
33
+ def self?.parse_range_header: (String? ranges_specifier) -> Array[Range[Integer]]?
34
+
35
+ def self?.parse_qvalues: (String? value) -> Array[String]
36
+
37
+ def self?.dequote: (String str) -> String
38
+
39
+ def self?.quote: (String str) -> String
40
+
41
+ class FormData < String
42
+ @raw_header: Array[String]
43
+
44
+ @header: Hash[String, Array[String]]
45
+
46
+ EmptyRawHeader: Array[String]
47
+
48
+ EmptyHeader: Hash[String, Array[String]]
49
+
50
+ attr_accessor name: String?
51
+
52
+ attr_accessor filename: String?
53
+
54
+ attr_accessor next_data: instance?
55
+
56
+ def initialize: (*String args) -> void
57
+
58
+ def []: (*String key) -> String
59
+ # following is as same as String#[]
60
+ | (int start, ?int length) -> String?
61
+ | (range[int?] range) -> String?
62
+ | (Regexp regexp, ?MatchData::capture backref) -> String?
63
+ | (String substring) -> String?
64
+
65
+ def <<: (String str) -> self
66
+
67
+ def append_data: (instance data) -> self
68
+
69
+ def each_data: () { (instance) -> void } -> void
70
+
71
+ def list: () -> Array[String]
72
+
73
+ alias to_ary list
74
+
75
+ def to_s: () -> String
76
+ end
77
+
78
+ def self?.parse_query: (String? str) -> Hash[String, FormData]
79
+
80
+ interface _EachLine
81
+ def each_line: () { (String) -> void } -> void
82
+ end
83
+
84
+ def self?.parse_form_data: (_EachLine? io, interned boundary) -> Hash[String, FormData]
85
+
86
+ def self?._make_regex: (String str) -> Regexp
87
+
88
+ def self?._make_regex!: (String str) -> Regexp
89
+
90
+ def self?._escape: (String str, Regexp regex) -> String
91
+
92
+ def self?._unescape: (String str, Regexp regex) -> String
93
+
94
+ UNESCAPED: Regexp
95
+
96
+ UNESCAPED_FORM: Regexp
97
+
98
+ NONASCII: Regexp
99
+
100
+ ESCAPED: Regexp
101
+
102
+ UNESCAPED_PCHAR: Regexp
103
+
104
+ def self?.escape: (String str) -> String
105
+
106
+ def self?.unescape: (String str) -> String
107
+
108
+ def self?.escape_form: (String str) -> String
109
+
110
+ def self?.unescape_form: (String str) -> String
111
+
112
+ def self?.escape_path: (String str) -> String
113
+
114
+ def self?.escape8bit: (String str) -> String
115
+ end
116
+ end
@@ -0,0 +1,17 @@
1
+ module WEBrick
2
+ class HTTPVersion
3
+ include Comparable
4
+
5
+ attr_accessor major: Integer
6
+
7
+ attr_accessor minor: Integer
8
+
9
+ def self.convert: (HTTPVersion | String version) -> instance
10
+
11
+ def initialize: (HTTPVersion | String version) -> void
12
+
13
+ def <=>: (HTTPVersion | String other) -> Integer?
14
+
15
+ def to_s: () -> String
16
+ end
17
+ end
data/sig/log.rbs ADDED
@@ -0,0 +1,93 @@
1
+ module WEBrick
2
+ class BasicLog
3
+ @log: IO?
4
+
5
+ @opened: TrueClass?
6
+
7
+ FATAL: 1
8
+
9
+ ERROR: 2
10
+
11
+ WARN: 3
12
+
13
+ INFO: 4
14
+
15
+ DEBUG: 5
16
+
17
+ # log-level, messages above this level will be logged
18
+ attr_accessor level: Integer
19
+
20
+ type log_file = (IO | String)?
21
+
22
+ def initialize: (?log_file log_file, ?Integer? level) -> void
23
+
24
+ #
25
+ # Closes the logger (also closes the log device associated to the logger)
26
+ def close: () -> void
27
+
28
+ def log: (Integer level, String data) -> IO?
29
+
30
+ #
31
+ # Synonym for log(INFO, obj.to_s)
32
+ def <<: (_ToS obj) -> IO?
33
+
34
+ type message = Exception | _ToStr | Object
35
+
36
+ # Shortcut for logging a FATAL message
37
+ def fatal: (message msg) -> IO?
38
+
39
+ # Shortcut for logging an ERROR message
40
+ def error: (message msg) -> IO?
41
+
42
+ # Shortcut for logging a WARN message
43
+ def warn: (message msg) -> IO?
44
+
45
+ # Shortcut for logging an INFO message
46
+ def info: (message msg) -> IO?
47
+
48
+ # Shortcut for logging a DEBUG message
49
+ def debug: (message msg) -> IO?
50
+
51
+ # Will the logger output FATAL messages?
52
+ def fatal?: () -> bool
53
+
54
+ # Will the logger output ERROR messages?
55
+ def error?: () -> bool
56
+
57
+ # Will the logger output WARN messages?
58
+ def warn?: () -> bool
59
+
60
+ # Will the logger output INFO messages?
61
+ def info?: () -> bool
62
+
63
+ # Will the logger output DEBUG messages?
64
+ def debug?: () -> bool
65
+
66
+ private
67
+
68
+ #
69
+ # Formats +arg+ for the logger
70
+ #
71
+ # * If +arg+ is an Exception, it will format the error message and
72
+ # the back trace.
73
+ # * If +arg+ responds to #to_str, it will return it.
74
+ # * Otherwise it will return +arg+.inspect.
75
+ def format: (message arg) -> String
76
+ end
77
+
78
+ class Log < BasicLog
79
+ # Format of the timestamp which is applied to each logged line. The
80
+ # default is <tt>"[%Y-%m-%d %H:%M:%S]"</tt>
81
+ attr_accessor time_format: String
82
+
83
+ #
84
+ # Same as BasicLog#initialize
85
+ #
86
+ # You can set the timestamp format through #time_format
87
+ def initialize: (?BasicLog::log_file log_file, ?Integer? level) -> void
88
+
89
+ #
90
+ # Same as BasicLog#log
91
+ def log: (Integer level, String data) -> IO?
92
+ end
93
+ end
data/sig/manifest.yaml ADDED
@@ -0,0 +1,8 @@
1
+ dependencies:
2
+ - name: digest
3
+ - name: erb
4
+ - name: openssl
5
+ - name: singleton
6
+ - name: socket
7
+ - name: tempfile
8
+ - name: uri
data/sig/server.rbs ADDED
@@ -0,0 +1,57 @@
1
+ module WEBrick
2
+ class ServerError < StandardError
3
+ end
4
+
5
+ class SimpleServer
6
+ def self.start: [T] () { () -> T } -> T
7
+ end
8
+
9
+ class Daemon
10
+ def self.start: () -> void
11
+ | [T] () { () -> T } -> T
12
+ end
13
+
14
+ class GenericServer
15
+ @shutdown_pipe: [IO, IO]?
16
+
17
+ attr_reader status: :Stop | :Running | :Shutdown
18
+
19
+ attr_reader config: Hash[Symbol, untyped]
20
+
21
+ attr_reader logger: BasicLog
22
+
23
+ attr_reader tokens: Thread::SizedQueue
24
+
25
+ attr_reader listeners: Array[TCPServer| OpenSSL::SSL::SSLServer]
26
+
27
+ def initialize: (?Hash[Symbol, untyped] config, ?Hash[Symbol, untyped] default) -> void
28
+
29
+ def []: (Symbol key) -> untyped
30
+
31
+ def listen: (String address, Integer port) -> void
32
+
33
+ def start: () ?{ (TCPSocket) -> void } -> void
34
+
35
+ def stop: () -> void
36
+
37
+ def shutdown: () -> void
38
+
39
+ def run: (TCPSocket sock) -> void
40
+
41
+ private
42
+
43
+ def accept_client: (TCPServer svr) -> TCPSocket?
44
+
45
+ def start_thread: (TCPSocket sock) ?{ (TCPSocket) -> void } -> Thread
46
+
47
+ def call_callback: (Symbol callback_name, *untyped args) -> untyped
48
+
49
+ def setup_shutdown_pipe: () -> [IO, IO]
50
+
51
+ def cleanup_shutdown_pipe: ([IO, IO]? shutdown_pipe) -> void
52
+
53
+ def alarm_shutdown_pipe: [T] () { (IO) -> T } -> T?
54
+
55
+ def cleanup_listener: () -> void
56
+ end
57
+ end
data/sig/ssl.rbs ADDED
@@ -0,0 +1,19 @@
1
+ module WEBrick
2
+ module Config
3
+ SSL: Hash[Symbol, untyped]
4
+ end
5
+
6
+ module Utils
7
+ def self?.create_self_signed_cert: (untyped bits, untyped cn, untyped comment) -> ::Array[untyped]
8
+ end
9
+
10
+ class GenericServer
11
+ @ssl_context: OpenSSL::SSL::SSLContext?
12
+
13
+ def ssl_context: () -> OpenSSL::SSL::SSLContext?
14
+
15
+ def setup_ssl_context: (Hash[Symbol, untyped] config) -> OpenSSL::SSL::SSLContext
16
+
17
+ def ssl_servername_callback: (untyped sslsocket, ?untyped? hostname) -> untyped
18
+ end
19
+ end