Class: Grape::Middleware::Versioner::Base

Inherits:
Base
  • Object
show all
Defined in:
lib/grape/middleware/versioner/base.rb

Direct Known Subclasses

AcceptVersionHeader, Header, Param, Path

Constant Summary collapse

DEFAULT_OPTIONS =
{
  pattern: /.*/i.freeze,
  version_options: {
    strict: false,
    cascade: true,
    parameter: 'apiver'
  }.freeze
}.freeze

Instance Attribute Summary

Attributes inherited from Base

#app, #env, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#after, #before, #call, #call!, #content_type, #content_type_for, #content_types, #context, #initialize, #mime_types, #query_params, #rack_request, #response

Methods included from DSL::Headers

#header

Constructor Details

This class inherits a constructor from Grape::Middleware::Base

Class Method Details

.inherited(klass) ⇒ Object



16
17
18
19
# File 'lib/grape/middleware/versioner/base.rb', line 16

def self.inherited(klass)
  super
  Versioner.register(klass)
end

Instance Method Details

#cascade?Boolean

By default those errors contain an ‘X-Cascade` header set to `pass`, which allows nesting and stacking of routes (see Grape::Router) for more information). To prevent this behavior, and not add the `X-Cascade` header, one can set the `:cascade` option to `false`.

Returns:

  • (Boolean)


48
49
50
# File 'lib/grape/middleware/versioner/base.rb', line 48

def cascade?
  version_options[:cascade]
end

#error_headersObject



60
61
62
# File 'lib/grape/middleware/versioner/base.rb', line 60

def error_headers
  cascade? ? { 'X-Cascade' => 'pass' } : {}
end

#mount_pathObject



29
30
31
# File 'lib/grape/middleware/versioner/base.rb', line 29

def mount_path
  options[:mount_path]
end

#parameter_keyObject



52
53
54
# File 'lib/grape/middleware/versioner/base.rb', line 52

def parameter_key
  version_options[:parameter]
end

#patternObject



33
34
35
# File 'lib/grape/middleware/versioner/base.rb', line 33

def pattern
  options[:pattern]
end

#potential_version_match?(potential_version) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/grape/middleware/versioner/base.rb', line 64

def potential_version_match?(potential_version)
  versions.blank? || versions.any? { |v| v.to_s == potential_version }
end

#prefixObject



25
26
27
# File 'lib/grape/middleware/versioner/base.rb', line 25

def prefix
  options[:prefix]
end

#strict?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/grape/middleware/versioner/base.rb', line 41

def strict?
  version_options[:strict]
end

#vendorObject



56
57
58
# File 'lib/grape/middleware/versioner/base.rb', line 56

def vendor
  version_options[:vendor]
end

#version_not_found!Object



68
69
70
# File 'lib/grape/middleware/versioner/base.rb', line 68

def version_not_found!
  throw :error, status: 404, message: '404 API Version Not Found', headers: { 'X-Cascade' => 'pass' }
end

#version_optionsObject



37
38
39
# File 'lib/grape/middleware/versioner/base.rb', line 37

def version_options
  options[:version_options]
end

#versionsObject



21
22
23
# File 'lib/grape/middleware/versioner/base.rb', line 21

def versions
  options[:versions]
end