require 'zlib' require 'sinatra' require 'sinatra/contrib' set :logging, false post '/body' do request.body.read end get '/gzip' do headers['Content-Encoding'] = 'gzip' io = StringIO.new gz = Zlib::GzipWriter.new( io ) begin gz.write( 'success' ) ensure gz.close end io.string end get '/' do 'GET' end post '/' do 'POST' end delete '/' do 'DELETE' end put '/' do 'PUT' end options '/' do 'OPTIONS' end get '/echo' do params.to_s end post '/echo' do params.to_s end get '/redirect' do redirect '/redirect/1' end get '/redirect/1' do redirect '/redirect/2' end get '/redirect/2' do redirect '/redirect/3' end get '/redirect/3' do 'This is the end.' end get '/sleep' do sleep 5 end get '/set_and_preserve_cookies' do cookies['stuff'] = "=stuf \00 here==" end get '/cookies' do cookies.map { |k, v| k.to_s + '=' + v.to_s }.join( ";" ) end get '/headers' do hash = env.reject{ |k, v| !k.to_s.downcase.include?( 'http' ) }.inject({}) do |h, (k, v)| k = k.split( '_' )[1..-1].map { |s| s.capitalize }.join( '-' ) h[k] = v || ''; h end hash.to_yaml end get '/user-agent' do env['HTTP_USER_AGENT'].to_s end get '/update_cookies' do cookies[cookies.keys.first] = cookies.values.first + ' [UPDATED!]' end get '/follow_location' do redirect '/redir_1' end get '/redir_1' do redirect '/redir_2' end get '/redir_2' do 'Welcome to redir_2!' end get '/custom_404/not' do 'This is not a custom 404, watch out.' end get '/custom_404/static/*' do 'This is a custom 404, try to catch it. ;)' end get '/custom_404/dynamic/*' do 'This is a custom 404 which includes the requested resource, try to catch it. ;)' + '
You asked for "' + params[:splat].first.to_s + '", which could not be found.' end get '/custom_404/random/*' do 'This is a custom 404, try to catch it. ;)
Random bit: ' + rand( 999 ).to_s end get '/custom_404/combo/*' do 'This is a custom 404, try to catch it. ;)
Random bit: ' + rand( 999 ).to_s + '
You asked for "' + params[:splat].first.to_s + '", which could not be found.' end