12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
|