X7ROOT File Manager
Current Path:
/opt/alt/ruby34/share/gems/gems/rack-3.0.8/lib/rack
opt
/
alt
/
ruby34
/
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: cascade.rb
# frozen_string_literal: true require_relative 'constants' module Rack # Rack::Cascade tries a request on several apps, and returns the # first response that is not 404 or 405 (or in a list of configured # status codes). If all applications tried return one of the configured # status codes, return the last response. class Cascade # deprecated, no longer used NotFound = [404, { CONTENT_TYPE => "text/plain" }, []] # An array of applications to try in order. attr_reader :apps # Set the apps to send requests to, and what statuses result in # cascading. Arguments: # # apps: An enumerable of rack applications. # cascade_for: The statuses to use cascading for. If a response is received # from an app, the next app is tried. def initialize(apps, cascade_for = [404, 405]) @apps = [] apps.each { |app| add app } @cascade_for = {} [*cascade_for].each { |status| @cascade_for[status] = true } end # Call each app in order. If the responses uses a status that requires # cascading, try the next app. If all responses require cascading, # return the response from the last app. def call(env) return [404, { CONTENT_TYPE => "text/plain" }, []] if @apps.empty? result = nil last_body = nil @apps.each do |app| # The SPEC says that the body must be closed after it has been iterated # by the server, or if it is replaced by a middleware action. Cascade # replaces the body each time a cascade happens. It is assumed that nil # does not respond to close, otherwise the previous application body # will be closed. The final application body will not be closed, as it # will be passed to the server as a result. last_body.close if last_body.respond_to? :close result = app.call(env) return result unless @cascade_for.include?(result[0].to_i) last_body = result[2] end result end # Append an app to the list of apps to cascade. This app will # be tried last. def add(app) @apps << app end # Whether the given app is one of the apps to cascade to. def include?(app) @apps.include?(app) end alias_method :<<, :add end end
Upload File
Create Folder