X7ROOT File Manager
Current Path:
/opt/alt/ruby32/share/gems/gems/rack-3.0.8/lib/rack
opt
/
alt
/
ruby32
/
share
/
gems
/
gems
/
rack-3.0.8
/
lib
/
rack
/
ðŸ“
..
ðŸ“
auth
📄
body_proxy.rb
(1.3 KB)
📄
builder.rb
(8.56 KB)
📄
cascade.rb
(2.25 KB)
📄
chunked.rb
(3.3 KB)
📄
common_logger.rb
(3.12 KB)
📄
conditional_get.rb
(2.99 KB)
📄
config.rb
(410 B)
📄
constants.rb
(2.47 KB)
📄
content_length.rb
(806 B)
📄
content_type.rb
(695 B)
📄
deflater.rb
(5.51 KB)
📄
directory.rb
(6.02 KB)
📄
etag.rb
(1.87 KB)
📄
events.rb
(4.8 KB)
📄
file.rb
(167 B)
📄
files.rb
(5.66 KB)
📄
head.rb
(524 B)
📄
headers.rb
(2.96 KB)
📄
lint.rb
(36.09 KB)
📄
lock.rb
(573 B)
📄
logger.rb
(414 B)
📄
media_type.rb
(1.4 KB)
📄
method_override.rb
(1.45 KB)
📄
mime.rb
(32.69 KB)
📄
mock.rb
(63 B)
📄
mock_request.rb
(5.37 KB)
📄
mock_response.rb
(3.28 KB)
ðŸ“
multipart
📄
multipart.rb
(1.17 KB)
📄
null_logger.rb
(1.18 KB)
📄
query_parser.rb
(8.37 KB)
📄
recursive.rb
(1.78 KB)
📄
reloader.rb
(3.02 KB)
📄
request.rb
(24.57 KB)
📄
response.rb
(10.72 KB)
📄
rewindable_input.rb
(3.12 KB)
📄
runtime.rb
(870 B)
📄
sendfile.rb
(5.55 KB)
📄
show_exceptions.rb
(13.73 KB)
📄
show_status.rb
(3.58 KB)
📄
static.rb
(6 KB)
📄
tempfile_reaper.rb
(778 B)
📄
urlmap.rb
(2.81 KB)
📄
utils.rb
(21.1 KB)
📄
version.rb
(958 B)
Editing: chunked.rb
# frozen_string_literal: true require_relative 'constants' require_relative 'utils' module Rack warn "Rack::Chunked is deprecated and will be removed in Rack 3.1", uplevel: 1 # Middleware that applies chunked transfer encoding to response bodies # when the response does not include a content-length header. # # This supports the trailer response header to allow the use of trailing # headers in the chunked encoding. However, using this requires you manually # specify a response body that supports a +trailers+ method. Example: # # [200, { 'trailer' => 'expires'}, ["Hello", "World"]] # # error raised # # body = ["Hello", "World"] # def body.trailers # { 'expires' => Time.now.to_s } # end # [200, { 'trailer' => 'expires'}, body] # # No exception raised class Chunked include Rack::Utils # A body wrapper that emits chunked responses. class Body TERM = "\r\n" TAIL = "0#{TERM}" # Store the response body to be chunked. def initialize(body) @body = body end # For each element yielded by the response body, yield # the element in chunked encoding. def each(&block) term = TERM @body.each do |chunk| size = chunk.bytesize next if size == 0 yield [size.to_s(16), term, chunk.b, term].join end yield TAIL yield_trailers(&block) yield term end # Close the response body if the response body supports it. def close @body.close if @body.respond_to?(:close) end private # Do nothing as this class does not support trailer headers. def yield_trailers end end # A body wrapper that emits chunked responses and also supports # sending Trailer headers. Note that the response body provided to # initialize must have a +trailers+ method that returns a hash # of trailer headers, and the rack response itself should have a # Trailer header listing the headers that the +trailers+ method # will return. class TrailerBody < Body private # Yield strings for each trailer header. def yield_trailers @body.trailers.each_pair do |k, v| yield "#{k}: #{v}\r\n" end end end def initialize(app) @app = app end # Whether the HTTP version supports chunked encoding (HTTP 1.1 does). def chunkable_version?(ver) case ver # pre-HTTP/1.0 (informally "HTTP/0.9") HTTP requests did not have # a version (nor response headers) when 'HTTP/1.0', nil, 'HTTP/0.9' false else true end end # If the rack app returns a response that should have a body, # but does not have content-length or transfer-encoding headers, # modify the response to use chunked transfer-encoding. def call(env) status, headers, body = response = @app.call(env) if chunkable_version?(env[SERVER_PROTOCOL]) && !STATUS_WITH_NO_ENTITY_BODY.key?(status.to_i) && !headers[CONTENT_LENGTH] && !headers[TRANSFER_ENCODING] headers[TRANSFER_ENCODING] = 'chunked' if headers['trailer'] response[2] = TrailerBody.new(body) else response[2] = Body.new(body) end end response end end end
Upload File
Create Folder