Class: Datadog::AppSec::APISecurity::EndpointCollection::RailsCollector
- Inherits:
-
Object
- Object
- Datadog::AppSec::APISecurity::EndpointCollection::RailsCollector
- Defined in:
- lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb
Overview
This class works with a collection of rails routes and produces an Enumerator that yields serialized endpoints.
Instance Method Summary collapse
-
#initialize(routes) ⇒ RailsCollector
constructor
A new instance of RailsCollector.
- #to_enum ⇒ Object
Constructor Details
#initialize(routes) ⇒ RailsCollector
Returns a new instance of RailsCollector.
14 15 16 |
# File 'lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb', line 14 def initialize(routes) @routes = routes end |
Instance Method Details
#to_enum ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb', line 18 def to_enum Enumerator.new do |yielder| @routes.each do |route| if route.dispatcher? if route.verb.include?('|') # report separate route for each method for multi-method routes route.verb.split('|').each do |method| yielder.yield RailsRouteSerializer.serialize(route, method_override: method) end else yielder.yield RailsRouteSerializer.serialize(route) end elsif mounted_grape_app?(route.app.rack_app) route.app.rack_app.routes.each do |grape_route| yielder.yield GrapeRouteSerializer.serialize(grape_route, path_prefix: route.path.spec.to_s) end elsif mounted_sinatra_app?(route.app.rack_app) route.app.rack_app.routes.each do |method, sinatra_routes| next if method == 'HEAD' sinatra_routes.each do |sinatra_route, _, _| yielder.yield SinatraRouteSerializer.serialize( sinatra_route, method: method, path_prefix: route.path.spec.to_s ) end end end end end end |