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_PATTERN =
/.*/i.freeze
DEFAULT_PARAMETER =
'apiver'

Constants inherited from Base

Base::TEXT_HTML

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, #initialize, #mime_types, #response

Methods included from DSL::Headers

#header

Methods included from Helpers

#context

Constructor Details

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

Class Method Details

.inherited(klass) ⇒ Object



10
11
12
13
# File 'lib/grape/middleware/versioner/base.rb', line 10

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)


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

def cascade?
  version_options[:cascade]
end

#default_optionsObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/grape/middleware/versioner/base.rb', line 15

def default_options
  {
    versions: nil,
    prefix: nil,
    mount_path: nil,
    pattern: DEFAULT_PATTERN,
    version_options: {
      strict: false,
      cascade: true,
      parameter: DEFAULT_PARAMETER
    }
  }
end

#error_headersObject



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

def error_headers
  cascade? ? { Grape::Http::Headers::X_CASCADE => 'pass' } : {}
end

#mount_pathObject



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

def mount_path
  options[:mount_path]
end

#parameter_keyObject



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

def parameter_key
  version_options[:parameter]
end

#patternObject



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

def pattern
  options[:pattern]
end

#potential_version_match?(potential_version) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/grape/middleware/versioner/base.rb', line 72

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

#prefixObject



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

def prefix
  options[:prefix]
end

#strict?Boolean

Returns:

  • (Boolean)


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

def strict?
  version_options[:strict]
end

#vendorObject



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

def vendor
  version_options[:vendor]
end

#version_not_found!Object



76
77
78
# File 'lib/grape/middleware/versioner/base.rb', line 76

def version_not_found!
  throw :error, status: 404, message: '404 API Version Not Found', headers: { Grape::Http::Headers::X_CASCADE => 'pass' }
end

#version_optionsObject



45
46
47
# File 'lib/grape/middleware/versioner/base.rb', line 45

def version_options
  options[:version_options]
end

#versionsObject



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

def versions
  options[:versions]
end