server.rb 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. require 'sinatra'
  2. require 'securerandom'
  3. require 'json'
  4. set :storage_directory, './storage/'
  5. # create a room
  6. post '/room' do
  7. id = SecureRandom.hex(6)
  8. Dir.mkdir(settings.storage_directory+id)
  9. content_type 'text/json'
  10. {id: id}.to_json
  11. end
  12. # get room content
  13. get '/room/:id' do |id|
  14. if Dir.exist?(settings.storage_directory+id)
  15. content_type 'text/json'
  16. Dir.glob(settings.storage_directory+id+'/*').map { |f| File.basename(f)}.to_json
  17. else
  18. 404
  19. end
  20. end
  21. # upload a file
  22. post '/room/:id' do |id|
  23. unless params[:file] &&
  24. (tmpfile = params[:file][:tempfile]) &&
  25. (name = params[:file][:filename])
  26. 403
  27. return
  28. end
  29. FileUtils.cp(tmpfile, settings.storage_directory+id+"/"+name)
  30. 200
  31. end
  32. # remove a room
  33. delete '/room/:id' do |id|
  34. end
  35. # get a file
  36. get '/room/:id/:filename' do |id, filename|
  37. send_file File.join(settings.storage_directory+id, filename)
  38. end
  39. # remove a file
  40. delete '/room/:id/:filename' do |id, filename|
  41. FileUtils.rm(settings.storage_directory+id+"/"+filename)
  42. end