Class: Grape::Middleware::Versioner::Base
- Inherits:
-
Base
- Object
- Base
- Grape::Middleware::Versioner::Base
show all
- Defined in:
- lib/grape/middleware/versioner/base.rb
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
#header
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`.
48
49
50
|
# File 'lib/grape/middleware/versioner/base.rb', line 48
def cascade?
version_options[:cascade]
end
|
60
61
62
|
# File 'lib/grape/middleware/versioner/base.rb', line 60
def
cascade? ? { 'X-Cascade' => 'pass' } : {}
end
|
#mount_path ⇒ Object
29
30
31
|
# File 'lib/grape/middleware/versioner/base.rb', line 29
def mount_path
options[:mount_path]
end
|
#parameter_key ⇒ Object
52
53
54
|
# File 'lib/grape/middleware/versioner/base.rb', line 52
def parameter_key
version_options[:parameter]
end
|
#pattern ⇒ Object
33
34
35
|
# File 'lib/grape/middleware/versioner/base.rb', line 33
def pattern
options[:pattern]
end
|
#potential_version_match?(potential_version) ⇒ 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
|
#prefix ⇒ Object
25
26
27
|
# File 'lib/grape/middleware/versioner/base.rb', line 25
def prefix
options[:prefix]
end
|
#strict? ⇒ Boolean
41
42
43
|
# File 'lib/grape/middleware/versioner/base.rb', line 41
def strict?
version_options[:strict]
end
|
#vendor ⇒ Object
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_options ⇒ Object
37
38
39
|
# File 'lib/grape/middleware/versioner/base.rb', line 37
def version_options
options[:version_options]
end
|
#versions ⇒ Object
21
22
23
|
# File 'lib/grape/middleware/versioner/base.rb', line 21
def versions
options[:versions]
end
|