Class: RailsContractSync::Runtime::RouteResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_contract_sync/runtime/route_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(route_set) ⇒ RouteResolver

Returns a new instance of RouteResolver.



4
5
6
# File 'lib/rails_contract_sync/runtime/route_resolver.rb', line 4

def initialize(route_set)
  @routes = Static::RouteExtractor.new(route_set).extract
end

Instance Method Details

#call(env) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/rails_contract_sync/runtime/route_resolver.rb', line 8

def call(env)
  params = env["action_dispatch.request.path_parameters"]
  return nil unless params

  controller = params[:controller]
  action = params[:action]
  match = @routes.find do |r|
    r[:controller] == controller && r[:action] == action && r[:verb] == env["REQUEST_METHOD"]
  end
  match&.fetch(:path)
end