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_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
#header
Methods included from Helpers
#context
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.
56
57
58
|
# File 'lib/grape/middleware/versioner/base.rb', line 56
def cascade?
version_options[:cascade]
end
|
#default_options ⇒ Object
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
|
68
69
70
|
# File 'lib/grape/middleware/versioner/base.rb', line 68
def
cascade? ? { Grape::Http::::X_CASCADE => 'pass' } : {}
end
|
#mount_path ⇒ Object
37
38
39
|
# File 'lib/grape/middleware/versioner/base.rb', line 37
def mount_path
options[:mount_path]
end
|
#parameter_key ⇒ Object
60
61
62
|
# File 'lib/grape/middleware/versioner/base.rb', line 60
def parameter_key
version_options[:parameter]
end
|
#pattern ⇒ Object
41
42
43
|
# File 'lib/grape/middleware/versioner/base.rb', line 41
def pattern
options[:pattern]
end
|
#potential_version_match?(potential_version) ⇒ 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
|
#prefix ⇒ Object
33
34
35
|
# File 'lib/grape/middleware/versioner/base.rb', line 33
def prefix
options[:prefix]
end
|
#strict? ⇒ Boolean
49
50
51
|
# File 'lib/grape/middleware/versioner/base.rb', line 49
def strict?
version_options[:strict]
end
|
#vendor ⇒ Object
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::::X_CASCADE => 'pass' }
end
|
#version_options ⇒ Object
45
46
47
|
# File 'lib/grape/middleware/versioner/base.rb', line 45
def version_options
options[:version_options]
end
|
#versions ⇒ Object
29
30
31
|
# File 'lib/grape/middleware/versioner/base.rb', line 29
def versions
options[:versions]
end
|