On Jun 6, 2011, at 5:35 PM, [email protected] wrote: > From: Chris Lalancette <[email protected]>
Damn, sorry for this, seems like I was squeezing patches in a wrong way... > > This patch also introduces DEFAULT_URI_PREFIX constant to be use > as a default for all routes instead of '/api > > Signed-off-by: Michal fojtik <[email protected]> > --- > server/lib/sinatra/rack_matrix_params.rb | 2 +- > server/lib/sinatra/url_for.rb | 21 ++++++++++++++++++++- > 2 files changed, 21 insertions(+), 2 deletions(-) > > diff --git a/server/lib/sinatra/rack_matrix_params.rb > b/server/lib/sinatra/rack_matrix_params.rb > index 6362c7f..da1889e 100644 > --- a/server/lib/sinatra/rack_matrix_params.rb > +++ b/server/lib/sinatra/rack_matrix_params.rb > @@ -57,7 +57,7 @@ module Rack > value=nil > next > else > - value = param > + value = param.gsub(/\?.*$/, '') > end > end > end > diff --git a/server/lib/sinatra/url_for.rb b/server/lib/sinatra/url_for.rb > index 60da0ef..4bd24ae 100644 > --- a/server/lib/sinatra/url_for.rb > +++ b/server/lib/sinatra/url_for.rb > @@ -28,6 +28,19 @@ require 'uri' > > module Sinatra > module UrlForHelper > + > + DEFAULT_URI_PREFIX = "/api" > + > + def api_url_for(url_fragment, mode=:path_only) > + matrix_params = '' > + if request.params['api'] > + matrix_params += ";provider=%s" % request.params['api']['provider'] > if request.params['api']['provider'] > + matrix_params += ";driver=%s" % request.params['api']['driver'] if > request.params['api']['driver'] > + end > + url_fragment = "/#{url_fragment}" unless url_fragment =~ /^\// # There > is no need to prefix URI with '/' > + url_for "#{DEFAULT_URI_PREFIX}#{matrix_params}#{url_fragment}", mode > + end > + > # Construct a link to +url_fragment+, which should be given relative to > # the base of this Sinatra app. The mode should be either > # <code>:path_only</code>, which will generate an absolute path within > @@ -63,14 +76,20 @@ module Sinatra > # Don't add the base fragment if url_for gets called more than once > # per url or the url_fragment passed in is an absolute url > if url_escape.match(/^#{base}/) or url_escape.match(/^http/) > + # here, we assume that if any driver additions are needed, they have > + # been done prior to entering this method. Hence we just return the > + # URL as-is > url_escape > else > + # one last thing we need to do here is to make sure we properly add > + # the driver type to the URL (if necessary) > + # puts request.env['REQUEST_URI'].inspect > "#{base}#{url_escape}" > end > end > > def root_url > - url_for '/' > + DEFAULT_URI_PREFIX > end > end > > -- > 1.7.4.1 >
