require 'rubygems' require 'sinatra/base' require 'rack/conneg' require 'active_support' require 'json' require File.join(File.dirname(__FILE__),'..','support','data_helper') class FakeServer < Sinatra::Base use(Rack::Conneg) do |conneg| conneg.set :accept_all_extensions, false conneg.set :fallback, :html conneg.ignore('/public/') conneg.provide([:atom,:xml]) end disable :logging before do content_type negotiated_type end get "/favicon" do Rack::Response.new('OK', 200).finish end post "/test/redirect/:location" do r = Rack::Response.new('OK', 201) r.header["Location"] = "#{request.scheme}://#{request.host}:#{request.port}/#{params[:location]}" r.finish end post "/test/?" do Rack::Response.new('OK', 201).finish end put "/test/?" do 'OK' end delete "/test/?" do 'OK' end get "/test" do 'OK' end get "/test/:error" do r = Rack::Response.new('OK', params[:error].to_i) if params[:error].to_i==302 r.header["Location"] = "/redirected" end r.finish end get "/request_with_querystring" do params.to_json end get '/test_redirection' do r = Rack::Response.new('', 201) r.header["Location"] = "http://localhost:4567/redirected" r.finish end get '/redirected' do "OK" end post '/custom/songs' do r = Rack::Response.new('', 201) r.header["Location"] = "http://localhost:4567/songs" r.finish end post '/with_content' do r = Rack::Response.new(' http://localhost:3000/ NilClasses feed 2010-04-06T22:06:43-03:00 ', 200) r.header["Content-type"] = "application/atom+xml" r.finish end get '/html_result' do respond_to do |wants| wants.html { Rack::Response.new('OK', 200).finish } end end get '/:file_name' do respond_to do |wants| wants.atom { response_data( 'atoms', params[:file_name] ) } wants.xml { response_data( 'atoms', params[:file_name] ) } wants.html { response_data( 'atoms', params[:file_name] ) } end end end FakeServer.run! :host => 'localhost', :port => 4567