Sha256: 42ede7de8df023910d7be10191296ab5916b749d20e9868c4d3191835ea32cbc
Contents?: true
Size: 1.31 KB
Versions: 12
Compression:
Stored size: 1.31 KB
Contents
require 'hashie/dash' module Lurker class Request < Hashie::Dash class NonroutableRequest < RuntimeError; end PREFIX = 'action_dispatch.request' property :verb, required: true property :endpoint_path, required: true property :payload, default: {} # ext property :path_info, required: true property :path_params, default: {} property :query_params, default: {} def self.build_from_action_dispatch(request) new( verb: request.method, endpoint_path: route_name(request), path_info: request.path_info, path_params: request.env["#{PREFIX}.path_parameters"].stringify_keys.except('format'), query_params: request.env["#{PREFIX}.query_parameters"], payload: request.env["#{PREFIX}.request_parameters"].merge( request.env["#{PREFIX}.query_parameters"] ).stringify_keys.except('action', "controller", 'format', '_method') ) end def self.reject_internal(hash) end def self.route_name(request) if defined? Rails Rails.application.routes.router.recognize(request) do |route, _| return route.path.spec.to_s.sub('(.:format)', '') end raise NonroutableRequest.new("Cannot find named route for: #{request.env['HTTP_HOST']}#{request.path_info}") end end end end
Version data entries
12 entries across 12 versions & 1 rubygems