Sha256: 399cbac42e7b73f7718c323505e61f4141685b55f837308c364d69d246e7fb03

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

require 'hashie/dash'

module Lurker
  class Request < Hashie::Dash
    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
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lurker-0.6.1 lib/lurker/request.rb
lurker-0.5.7 lib/lurker/request.rb
lurker-0.6.0 lib/lurker/request.rb