Guest User

Untitled

a guest
Jun 1st, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. require 'rubygems'
  2. require 'sinatra'
  3. require 'ftools'
  4. require 'dm-core'
  5. require 'dm-validations'
  6. require 'dm-timestamps'
  7.  
  8. DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/files.sqlite3")
  9.  
  10. use Rack::Auth::Basic do |username, password|
  11. username == 'admin' && password == 'secret'
  12. end
  13.  
  14. class StoredFile
  15. include DataMapper::Resource
  16.  
  17. property :id, Integer, :serial => true # primary serial key
  18. property :filename, String, :nullable => false # cannot be null
  19. property :created_at, DateTime
  20.  
  21. default_scope(:default).update(:order => [:created_at.desc])
  22. end
  23.  
  24. DataMapper.auto_upgrade!
  25.  
  26. # list
  27. get '/' do
  28. @files = StoredFile.all
  29. erb :list
  30. end
  31.  
  32. # new file upload
  33. post '/' do
  34. tempfile = params['file'][:tempfile]
  35. @file = StoredFile.new :filename => params['file'][:filename]
  36. @file.save!
  37. File.copy(tempfile.path, "./files/#{@file.id}.upload")
  38. redirect '/'
  39. end
  40.  
  41. # download file
  42. get '/:id' do
  43. @file = StoredFile.get(params[:id])
  44. send_file "./files/#{@file.id}.upload", :filename => @file.filename, :type => 'Application/octet-stream'
  45. redirect '/'
  46. end
  47.  
  48. # delete file
  49. get '/:id/delete' do
  50. File.delete("./files/#{params[:id]}.upload")
  51. StoredFile.get(params[:id]).destroy
  52. redirect '/'
  53. end
Add Comment
Please, Sign In to add comment