X7ROOT File Manager
Current Path:
/opt/cpanel/ea-ruby27/root/usr/local/share/gems/gems/rack-2.2.4/lib/rack
opt
/
cpanel
/
ea-ruby27
/
root
/
usr
/
local
/
share
/
gems
/
gems
/
rack-2.2.4
/
lib
/
rack
/
📁
..
📁
auth
📄
body_proxy.rb
(1.27 KB)
📄
builder.rb
(8.21 KB)
📄
cascade.rb
(2.22 KB)
📄
chunked.rb
(3.19 KB)
📄
common_logger.rb
(2.96 KB)
📄
conditional_get.rb
(2.99 KB)
📄
config.rb
(410 B)
📄
content_length.rb
(919 B)
📄
content_type.rb
(684 B)
📁
core_ext
📄
deflater.rb
(5.15 KB)
📄
directory.rb
(5.9 KB)
📄
etag.rb
(2.14 KB)
📄
events.rb
(4.72 KB)
📄
file.rb
(88 B)
📄
files.rb
(5.74 KB)
📁
handler
📄
handler.rb
(2.87 KB)
📄
head.rb
(520 B)
📄
lint.rb
(30.92 KB)
📄
lobster.rb
(1.96 KB)
📄
lock.rb
(716 B)
📄
logger.rb
(384 B)
📄
media_type.rb
(1.4 KB)
📄
method_override.rb
(1.29 KB)
📄
mime.rb
(32.39 KB)
📄
mock.rb
(8.29 KB)
📁
multipart
📄
multipart.rb
(2.56 KB)
📄
null_logger.rb
(980 B)
📄
query_parser.rb
(6.85 KB)
📄
recursive.rb
(1.75 KB)
📄
reloader.rb
(3.12 KB)
📄
request.rb
(19.69 KB)
📄
response.rb
(8.78 KB)
📄
rewindable_input.rb
(2.85 KB)
📄
runtime.rb
(885 B)
📄
sendfile.rb
(5.45 KB)
📄
server.rb
(13.29 KB)
📁
session
📄
show_exceptions.rb
(13.3 KB)
📄
show_status.rb
(3.42 KB)
📄
static.rb
(6.07 KB)
📄
tempfile_reaper.rb
(661 B)
📄
urlmap.rb
(2.77 KB)
📄
utils.rb
(17.91 KB)
📄
version.rb
(785 B)
Editing: etag.rb
# frozen_string_literal: true require_relative '../rack' require 'digest/sha2' module Rack # Automatically sets the ETag header on all String bodies. # # The ETag header is skipped if ETag or Last-Modified headers are sent or if # a sendfile body (body.responds_to :to_path) is given (since such cases # should be handled by apache/nginx). # # On initialization, you can pass two parameters: a Cache-Control directive # used when Etag is absent and a directive when it is present. The first # defaults to nil, while the second defaults to "max-age=0, private, must-revalidate" class ETag ETAG_STRING = Rack::ETAG DEFAULT_CACHE_CONTROL = "max-age=0, private, must-revalidate" def initialize(app, no_cache_control = nil, cache_control = DEFAULT_CACHE_CONTROL) @app = app @cache_control = cache_control @no_cache_control = no_cache_control end def call(env) status, headers, body = @app.call(env) headers = Utils::HeaderHash[headers] if etag_status?(status) && etag_body?(body) && !skip_caching?(headers) original_body = body digest, new_body = digest_body(body) body = Rack::BodyProxy.new(new_body) do original_body.close if original_body.respond_to?(:close) end headers[ETAG_STRING] = %(W/"#{digest}") if digest end unless headers[CACHE_CONTROL] if digest headers[CACHE_CONTROL] = @cache_control if @cache_control else headers[CACHE_CONTROL] = @no_cache_control if @no_cache_control end end [status, headers, body] end private def etag_status?(status) status == 200 || status == 201 end def etag_body?(body) !body.respond_to?(:to_path) end def skip_caching?(headers) headers.key?(ETAG_STRING) || headers.key?('Last-Modified') end def digest_body(body) parts = [] digest = nil body.each do |part| parts << part (digest ||= Digest::SHA256.new) << part unless part.empty? end [digest && digest.hexdigest.byteslice(0, 32), parts] end end end
Upload File
Create Folder