68 lines
1.3 KiB
Ruby
68 lines
1.3 KiB
Ruby
require 'sinatra/base'
|
|
|
|
module Faraday
|
|
class LiveServer < Sinatra::Base
|
|
set :environment, :test
|
|
disable :logging
|
|
disable :protection
|
|
|
|
[:get, :post, :put, :patch, :delete, :options].each do |method|
|
|
send(method, '/echo') do
|
|
kind = request.request_method.downcase
|
|
out = kind.dup
|
|
out << ' ?' << request.GET.inspect if request.GET.any?
|
|
out << ' ' << request.POST.inspect if request.POST.any?
|
|
|
|
content_type 'text/plain'
|
|
return out
|
|
end
|
|
end
|
|
|
|
get '/echo_header' do
|
|
header = "HTTP_#{params[:name].tr('-', '_').upcase}"
|
|
request.env.fetch(header) { 'NONE' }
|
|
end
|
|
|
|
post '/file' do
|
|
if params[:uploaded_file].respond_to? :each_key
|
|
"file %s %s %d" % [
|
|
params[:uploaded_file][:filename],
|
|
params[:uploaded_file][:type],
|
|
params[:uploaded_file][:tempfile].size
|
|
]
|
|
else
|
|
status 400
|
|
end
|
|
end
|
|
|
|
get '/multi' do
|
|
[200, { 'Set-Cookie' => 'one, two' }, '']
|
|
end
|
|
|
|
get '/who-am-i' do
|
|
request.env['REMOTE_ADDR']
|
|
end
|
|
|
|
get '/slow' do
|
|
sleep 10
|
|
[200, {}, 'ok']
|
|
end
|
|
|
|
get '/204' do
|
|
status 204 # no content
|
|
end
|
|
|
|
get '/ssl' do
|
|
request.secure?.to_s
|
|
end
|
|
|
|
error do |e|
|
|
"#{e.class}\n#{e.to_s}\n#{e.backtrace.join("\n")}"
|
|
end
|
|
end
|
|
end
|
|
|
|
if $0 == __FILE__
|
|
Faraday::LiveServer.run!
|
|
end
|