Module: Jets::Controller::Request::Compat::Params
- Extended by:
- Memoist
- Included in:
- Jets::Controller::Request
- Defined in:
- lib/jets/controller/request/compat/params.rb
Overview
Provides these 3 methods to make it Rails compatible:
request_parameters
query_parameters
path_parameters
Instance Method Summary collapse
-
#GET ⇒ Object
(also: #query_parameters)
Based on ActionDispatch::Request#GET bit.ly/48hvDwe Override Rack’s GET method to support indifferent access.
- #get_request_parameters ⇒ Object
-
#parameters(include_path_params: true, include_body_params: true) ⇒ Object
(also: #params)
Merge all the parameters together for convenience.
- #path_parameters ⇒ Object
- #path_parameters_defaults ⇒ Object
-
#POST ⇒ Object
(also: #request_parameters)
Based on ActionDispatch::Request#POST bit.ly/48fxh1A Override Rack’s POST method to support indifferent access.
-
#request_method_from_hidden_method_field ⇒ Object
jets specific.
- #request_parameters=(params) ⇒ Object
- #set_binary_encoding(params) ⇒ Object
Instance Method Details
#GET ⇒ Object Also known as: query_parameters
Based on ActionDispatch::Request#GET bit.ly/48hvDwe Override Rack’s GET method to support indifferent access.
61 62 63 64 65 66 67 |
# File 'lib/jets/controller/request/compat/params.rb', line 61 def GET fetch_header("action_dispatch.request.query_parameters") do |k| params = event["queryStringParameters"] || {} set_binary_encoding(params) set_header k, normalize_encode_params(params) end end |
#get_request_parameters ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/jets/controller/request/compat/params.rb', line 85 def get_request_parameters body = event['isBase64Encoded'] ? base64_decode(event["body"]) : event["body"] return {} if body.nil? parsed_json = parse_json(body) return parsed_json if parsed_json if content_type.to_s.include?("application/x-www-form-urlencoded") return ::Rack::Utils.parse_nested_query(body) elsif content_type.to_s.include?("multipart/form-data") return parse_multipart(body) end {} # fallback to empty Hash end |
#parameters(include_path_params: true, include_body_params: true) ⇒ Object Also known as: params
Merge all the parameters together for convenience. Users still have access via events.
Precedence:
1. path parameters have highest precdence
2. query string parameters
3. body parameters
28 29 30 31 32 33 34 35 36 |
# File 'lib/jets/controller/request/compat/params.rb', line 28 def parameters(include_path_params: true, include_body_params: true) params = {} params = params.deep_merge(request_parameters) if include_body_params params = params.deep_merge(unescape_recursively(query_parameters)) # always params = params.deep_merge(path_parameters) if include_path_params params = set_binary_encoding(params) params = normalize_encode_params(params) params end |
#path_parameters ⇒ Object
40 41 42 43 44 |
# File 'lib/jets/controller/request/compat/params.rb', line 40 def path_parameters path_params = event["pathParameters"] || {} path_params.merge!(path_parameters_defaults) path_params = path_params.map { |k, path| [k, CGI.unescape(path.to_s)] }.to_h end |
#path_parameters_defaults ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/jets/controller/request/compat/params.rb', line 46 def path_parameters_defaults route = Jets::Router::Matcher.new.find_by_request(self) if route controller = route.controller_name.delete_suffix("Controller").underscore { controller: controller, action: route.action_name, }.merge(route.resolved_defaults) else {} end end |
#POST ⇒ Object Also known as: request_parameters
Based on ActionDispatch::Request#POST bit.ly/48fxh1A Override Rack’s POST method to support indifferent access.
72 73 74 75 76 77 |
# File 'lib/jets/controller/request/compat/params.rb', line 72 def POST fetch_header("action_dispatch.request.request_parameters") do params = get_request_parameters self.request_parameters = normalize_encode_params(params) end end |
#request_method_from_hidden_method_field ⇒ Object
jets specific
103 104 105 |
# File 'lib/jets/controller/request/compat/params.rb', line 103 def request_method_from_hidden_method_field get_request_parameters["_method"].to_s.upcase if get_request_parameters["_method"] end |
#request_parameters=(params) ⇒ Object
80 81 82 83 |
# File 'lib/jets/controller/request/compat/params.rb', line 80 def request_parameters=(params) raise if params.nil? set_header("action_dispatch.request.request_parameters", params) end |
#set_binary_encoding(params) ⇒ Object
15 16 17 18 19 |
# File 'lib/jets/controller/request/compat/params.rb', line 15 def set_binary_encoding(params) controller = path_parameters[:controller] action = path_parameters[:action] ActionDispatch::Request::Utils.set_binary_encoding(self, params, controller, action) end |