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 |
# 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? yielder.yield RailsRouteSerializer.serialize(route) 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 |