Sha256: e0893fdbbb2c4145d3f3afc6b13d18dd27c36fb801705ce800c1716ad6002f3d

Contents?: true

Size: 1.22 KB

Versions: 26

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Doorkeeper
  module Rails
    class Routes
      # Thread-safe registry of any Doorkeeper additional routes.
      # Used to allow implementing of Doorkeeper extensions that must
      # use their own routes.
      #
      module Registry
        ROUTES_ACCESS_LOCK = Mutex.new
        ROUTES_DEFINITION_LOCK = Mutex.new

        InvalidRouterClass = Class.new(StandardError)

        # Collection of additional registered routes for Doorkeeper.
        #
        # @return [Array<Object>] set of registered routes
        #
        def registered_routes
          ROUTES_DEFINITION_LOCK.synchronize do
            @registered_routes ||= Set.new
          end
        end

        # Registers additional routes in the Doorkeeper registry
        #
        # @param [Object] routes
        #   routes class
        #
        def register_routes(routes)
          if !routes.is_a?(Module) || !(routes < AbstractRouter)
            raise InvalidRouterClass, "routes class must include Doorkeeper::Rails::AbstractRouter"
          end

          ROUTES_ACCESS_LOCK.synchronize do
            registered_routes << routes
          end
        end

        alias register register_routes
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
doorkeeper-5.8.1 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.8.0 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.7.1 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.7.0 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.9 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.8 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.7 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.6 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.5 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.4 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.3 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.2 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.1 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.0 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.0.rc2 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.6.0.rc1 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.5.4 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.5.3 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.5.2 lib/doorkeeper/rails/routes/registry.rb
doorkeeper-5.5.1 lib/doorkeeper/rails/routes/registry.rb