Sha256: 3d1a0ec9b6e92c6bf09493d3536d71f69e7ffd73be4f655c4c266b99c0ae8b28
Contents?: true
Size: 1.42 KB
Versions: 5
Compression:
Stored size: 1.42 KB
Contents
# frozen_string_literal: true module Grape # A container for endpoints or other namespaces, which allows for both # logical grouping of endpoints as well as sharing common configuration. # May also be referred to as group, segment, or resource. class Namespace attr_reader :space, :options # @param space [String] the name of this namespace # @param options [Hash] options hash # @option options :requirements [Hash] param-regex pairs, all of which must # be met by a request's params for all endpoints in this namespace, or # validation will fail and return a 422. def initialize(space, **options) @space = space.to_s @options = options end # Retrieves the requirements from the options hash, if given. # @return [Hash] def requirements options[:requirements] || {} end # (see ::joined_space_path) def self.joined_space(settings) settings&.map(&:space) end # Join the namespaces from a list of settings to create a path prefix. # @param settings [Array] list of Grape::Util::InheritableSettings. def self.joined_space_path(settings) JoinedSpaceCache[joined_space(settings)] end class JoinedSpaceCache < Grape::Util::Cache def initialize super @cache = Hash.new do |h, joined_space| h[joined_space] = Grape::Router.normalize_path(joined_space.join('/')) end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
grape-2.2.0 | lib/grape/namespace.rb |
grape-2.1.3 | lib/grape/namespace.rb |
grape-2.1.2 | lib/grape/namespace.rb |
grape-2.1.1 | lib/grape/namespace.rb |
grape-2.1.0 | lib/grape/namespace.rb |