module Datadog::AppSec::Contrib::Sinatra::DispatchPatch
def dispatch!
def dispatch! env = @request.env context = env[Datadog::AppSec::Ext::SCOPE_KEY] return super unless context # TODO: handle exceptions, except for super gateway_request = Gateway::Request.new(env) request_return, request_response = Instrumentation.gateway.push('sinatra.request.dispatch', gateway_request) do # handle process_route interruption catch(Datadog::AppSec::Contrib::Sinatra::Ext::ROUTE_INTERRUPT) { super } end if request_response blocked_event = request_response.find { |action, _options| action == :block } if blocked_event self.response = AppSec::Response.negotiate(env, blocked_event.last[:actions]).to_sinatra_response request_return = nil end end request_return end