require 'sinatra' require 'securerandom' require 'json' set :storage_directory, './storage/' # create a room post '/room' do id = SecureRandom.hex(6) Dir.mkdir(settings.storage_directory+id) content_type 'text/json' {id: id}.to_json end # get room content get '/room/:id' do |id| if Dir.exist?(settings.storage_directory+id) content_type 'text/json' Dir.glob(settings.storage_directory+id+'/*').map { |f| File.basename(f)}.to_json else 404 end end # upload a file post '/room/:id' do |id| unless params[:file] && (tmpfile = params[:file][:tempfile]) && (name = params[:file][:filename]) 403 return end FileUtils.cp(tmpfile, settings.storage_directory+id+"/"+name) 200 end # remove a room delete '/room/:id' do |id| end # get a file get '/room/:id/:filename' do |id, filename| send_file File.join(settings.storage_directory+id, filename) end # remove a file delete '/room/:id/:filename' do |id, filename| FileUtils.rm(settings.storage_directory+id+"/"+filename) end