Skip to content

Instantly share code, notes, and snippets.

@oisin
Created May 2, 2011 23:36
Show Gist options
  • Select an option

  • Save oisin/952572 to your computer and use it in GitHub Desktop.

Select an option

Save oisin/952572 to your computer and use it in GitHub Desktop.
API version checking using Sinatra's before filter
require 'sinatra'
# Set the version of the API being run here
#
MAJOR_VERSION = 1
MINOR_VERSION = 0
helpers do
def version_compatible?(nums)
return MAJOR_VERSION == nums[0].to_i && MINOR_VERSION >= nums[1].to_i
end
end
# Enforce compatibility before the call. Rewrite the
# URL in the request to remove the API versioning stuff
#
before %r{/api/v(\d)\.(\d)} do
if version_compatible?(params[:captures])
target = request.fullpath.split('/').last
request.path_info = "/#{target}"
else
halt 400, "Version not compatible with this server"
end
end
# Reach this route using
# http://localhost:4567/api/vX.Y/hello
#
get '/hello' do
"Hello there, compatible client."
end
@oisin
Copy link
Copy Markdown
Author

oisin commented May 23, 2011 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment