21 lines
No EOL
548 B
Ruby
21 lines
No EOL
548 B
Ruby
class ApiVersion
|
|
attr_reader :version, :default
|
|
|
|
def initialize(version, default = false)
|
|
@version = version
|
|
@default = default
|
|
end
|
|
|
|
# check whether version is specified or is default
|
|
def matches?(request)
|
|
check_headers(request.headers) || default
|
|
end
|
|
|
|
private
|
|
|
|
def check_headers(headers)
|
|
# check version from Accept headers; expect custom media type `todos`
|
|
accept = headers[:accept]
|
|
accept && accept.include?("application/vnd.rails.#{version}+json") # header Accept: application/vnd.rails.v#+json
|
|
end
|
|
end |