mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
81 lines
1.3 KiB
Ruby
81 lines
1.3 KiB
Ruby
$stderr.puts "loading"
|
|
require 'sinatra'
|
|
|
|
require_relative 'rainbows' if RUBY_ENGINE == 'ruby'
|
|
|
|
configure do
|
|
set :foo, :bar
|
|
end
|
|
|
|
get '/app_file' do
|
|
content_type :txt
|
|
settings.app_file
|
|
end
|
|
|
|
get '/ping' do
|
|
'pong'
|
|
end
|
|
|
|
get '/stream' do
|
|
stream do |out|
|
|
sleep 0.1
|
|
out << "a"
|
|
sleep 1.2
|
|
out << "b"
|
|
end
|
|
end
|
|
|
|
get '/mainonly' do
|
|
object = Object.new
|
|
begin
|
|
object.send(:get, '/foo') { }
|
|
'false'
|
|
rescue NameError
|
|
'true'
|
|
end
|
|
end
|
|
|
|
set :out, nil
|
|
get '/async' do
|
|
stream(:keep_open) { |o| (settings.out = o) << "hi!" }
|
|
end
|
|
|
|
get '/send' do
|
|
settings.out << params[:msg] if params[:msg]
|
|
settings.out.close if params[:close]
|
|
"ok"
|
|
end
|
|
|
|
get '/send_file' do
|
|
file = File.expand_path '../../views/a/in_a.str', __FILE__
|
|
send_file file
|
|
end
|
|
|
|
get '/streaming' do
|
|
headers['Content-Length'] = '46'
|
|
stream do |out|
|
|
out << "It's gonna be legen -\n"
|
|
sleep 0.5
|
|
out << " (wait for it) \n"
|
|
puts headers
|
|
sleep 1
|
|
out << "- dary!\n"
|
|
end
|
|
end
|
|
|
|
class Subclass < Sinatra::Base
|
|
set :out, nil
|
|
get '/subclass/async' do
|
|
stream(:keep_open) { |o| (settings.out = o) << "hi!" }
|
|
end
|
|
|
|
get '/subclass/send' do
|
|
settings.out << params[:msg] if params[:msg]
|
|
settings.out.close if params[:close]
|
|
"ok"
|
|
end
|
|
end
|
|
|
|
use Subclass
|
|
|
|
$stderr.puts "starting"
|