1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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 48 49 50 51 52 53 54 55 56
|
# frozen_string_literal: true
require 'active_support/concern'
module Grape
module DSL
module Middleware
extend ActiveSupport::Concern
include Grape::DSL::Configuration
module ClassMethods
# Apply a custom middleware to the API. Applies
# to the current namespace and any children, but
# not parents.
#
# @param middleware_class [Class] The class of the middleware you'd like
# to inject.
def use(middleware_class, *args, &block)
arr = [:use, middleware_class, *args]
arr << block if block
namespace_stackable(:middleware, arr)
end
def insert(*args, &block)
arr = [:insert, *args]
arr << block if block
namespace_stackable(:middleware, arr)
end
def insert_before(*args, &block)
arr = [:insert_before, *args]
arr << block if block
namespace_stackable(:middleware, arr)
end
def insert_after(*args, &block)
arr = [:insert_after, *args]
arr << block if block
namespace_stackable(:middleware, arr)
end
# Retrieve an array of the middleware classes
# and arguments that are currently applied to the
# application.
def middleware
namespace_stackable(:middleware) || []
end
end
end
end
end
|