Module: Aserto::ResourceMapper

Defined in:
lib/aserto/resource_mapper.rb

Class Method Summary collapse

Class Method Details

.execute(request) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/aserto/resource_mapper.rb', line 6

def execute(request)
  if defined? ::Rails
    params = request.params
    return {} unless params.is_a?(Hash) && !params.empty?

    require_relative "rails/utils"

    route = Aserto::Rails::Utils.route(request)
    path = route[:path] if route
    return {} unless path

    fields = path.split("/")
                 .select { |part| part.starts_with?(":") }
                 .map { |field| field.sub(":", "") }
    return {} if fields.empty?

    require "google/protobuf/well_known_types"
    return Google::Protobuf::Struct.from_hash(fields.to_h { |field| [field, params[field]] })

  end

  {}
end