PHP 8.2.31
Preview: method_override.rb Size: 1.45 KB
//proc/thread-self/root/opt/alt/ruby27/share/gems/gems/rack-3.0.8/lib/rack/method_override.rb

# frozen_string_literal: true

require_relative 'constants'
require_relative 'request'
require_relative 'utils'

module Rack
  class MethodOverride
    HTTP_METHODS = %w[GET HEAD PUT POST DELETE OPTIONS PATCH LINK UNLINK]

    METHOD_OVERRIDE_PARAM_KEY = "_method"
    HTTP_METHOD_OVERRIDE_HEADER = "HTTP_X_HTTP_METHOD_OVERRIDE"
    ALLOWED_METHODS = %w[POST]

    def initialize(app)
      @app = app
    end

    def call(env)
      if allowed_methods.include?(env[REQUEST_METHOD])
        method = method_override(env)
        if HTTP_METHODS.include?(method)
          env[RACK_METHODOVERRIDE_ORIGINAL_METHOD] = env[REQUEST_METHOD]
          env[REQUEST_METHOD] = method
        end
      end

      @app.call(env)
    end

    def method_override(env)
      req = Request.new(env)
      method = method_override_param(req) ||
        env[HTTP_METHOD_OVERRIDE_HEADER]
      begin
        method.to_s.upcase
      rescue ArgumentError
        env[RACK_ERRORS].puts "Invalid string for method"
      end
    end

    private

    def allowed_methods
      ALLOWED_METHODS
    end

    def method_override_param(req)
      req.POST[METHOD_OVERRIDE_PARAM_KEY] if req.form_data? || req.parseable_data?
    rescue Utils::InvalidParameterError, Utils::ParameterTypeError, QueryParser::ParamsTooDeepError
      req.get_header(RACK_ERRORS).puts "Invalid or incomplete POST params"
    rescue EOFError
      req.get_header(RACK_ERRORS).puts "Bad request content body"
    end
  end
end

Directory Contents

Dirs: 2 × Files: 44

Name Size Perms Modified Actions
auth DIR
- drwxr-xr-x 2024-03-06 04:26:11
Edit Download
multipart DIR
- drwxr-xr-x 2024-03-06 04:26:11
Edit Download
1.30 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
8.56 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
2.25 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.30 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.12 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
2.99 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
410 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
2.47 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
806 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
695 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
5.51 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
6.02 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.87 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
4.80 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
167 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
5.66 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
524 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
2.96 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
36.09 KB lrwxr-xr-x 2024-02-12 21:16:27
Edit Download
573 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
414 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.40 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.45 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
32.69 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
63 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
5.37 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.28 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.17 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.18 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
8.37 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
1.78 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.02 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
24.57 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
10.72 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.12 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
870 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
5.55 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
13.73 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
3.58 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
6.00 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
778 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download
2.81 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
21.10 KB lrw-r--r-- 2024-02-12 21:16:27
Edit Download
958 B lrw-r--r-- 2024-02-12 21:16:27
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).