class Apiphobic::Requests::TransformJsonApi
Attributes
request[RW]
Public Class Methods
new(request)
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 15 def initialize(request) self.request = request end
Public Instance Methods
transform()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 19 def transform request['QUERY_STRING'] = query_string_with_underscored_parameters if has_content? && json? request['rack.input'] = request_body_with_underscored_json_keys request['CONTENT_LENGTH'] = content_length.to_s end request end
Private Instance Methods
content_length()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 40 def content_length underscored_request_json.bytesize end
has_content?()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 32 def has_content? request['CONTENT_LENGTH'].to_i.positive? end
json?()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 36 def json? request['CONTENT_TYPE'] =~ /json/ end
query_string()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 79 def query_string request['QUERY_STRING'] end
query_string_with_underscored_parameters()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 48 def query_string_with_underscored_parameters @query_string_with_underscored_parameters ||= begin return query_string unless query_string.respond_to?(:gsub) query_string.gsub(/(?<=\A|&|\?)[^=&]+/) do |parameter_name| unescaped_parameter_name = CGI.unescape(parameter_name) underscored_parameter_name = unescaped_parameter_name.underscore CGI.escape(underscored_parameter_name) end end end
request_body()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 73 def request_body request['rack.input']&.read.to_s ensure request['rack.input']&.rewind end
request_body_with_underscored_json_keys()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 44 def request_body_with_underscored_json_keys @request_body_with_underscored_json_keys ||= StringIO.new(underscored_request_json) end
request_hash()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 69 def request_hash JSON.parse(request_body) end
underscored_request_hash()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 65 def underscored_request_hash request_hash.deep_underscore_keys end
underscored_request_json()
click to toggle source
# File lib/apiphobic/requests/transform_json_api.rb, line 61 def underscored_request_json @underscored_request_json ||= JSON.dump(underscored_request_hash) end