webrick 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +4 -0
- data/README.md +2 -0
- data/Rakefile +0 -7
- data/lib/webrick/httprequest.rb +37 -9
- data/lib/webrick/httputils.rb +32 -12
- data/lib/webrick/version.rb +1 -1
- data/sig/accesslog.rbs +24 -0
- data/sig/cgi.rbs +92 -0
- data/sig/compat.rbs +18 -0
- data/sig/config.rbs +17 -0
- data/sig/cookie.rbs +37 -0
- data/sig/htmlutils.rbs +5 -0
- data/sig/httpauth/authenticator.rbs +55 -0
- data/sig/httpauth/basicauth.rbs +29 -0
- data/sig/httpauth/digestauth.rbs +85 -0
- data/sig/httpauth/htdigest.rbs +31 -0
- data/sig/httpauth/htgroup.rbs +21 -0
- data/sig/httpauth/htpasswd.rbs +31 -0
- data/sig/httpauth/userdb.rbs +13 -0
- data/sig/httpauth.rbs +13 -0
- data/sig/httpproxy.rbs +61 -0
- data/sig/httprequest.rbs +169 -0
- data/sig/httpresponse.rbs +117 -0
- data/sig/https.rbs +49 -0
- data/sig/httpserver.rbs +71 -0
- data/sig/httpservlet/abstract.rbs +36 -0
- data/sig/httpservlet/cgi_runner.rbs +3 -0
- data/sig/httpservlet/cgihandler.rbs +23 -0
- data/sig/httpservlet/erbhandler.rbs +17 -0
- data/sig/httpservlet/filehandler.rbs +76 -0
- data/sig/httpservlet/prochandler.rbs +21 -0
- data/sig/httpservlet.rbs +4 -0
- data/sig/httpstatus.rbs +255 -0
- data/sig/httputils.rbs +116 -0
- data/sig/httpversion.rbs +17 -0
- data/sig/log.rbs +93 -0
- data/sig/manifest.yaml +8 -0
- data/sig/server.rbs +57 -0
- data/sig/ssl.rbs +19 -0
- data/sig/utils.rbs +122 -0
- data/sig/version.rbs +3 -0
- data/webrick.gemspec +35 -0
- metadata +43 -8
@@ -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
|
data/sig/httpservlet.rbs
ADDED
data/sig/httpstatus.rbs
ADDED
@@ -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
|
data/sig/httpversion.rbs
ADDED
@@ -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
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
|