This repository has been archived by the owner on Jan 24, 2023. It is now read-only.
/
soundcloud.rb
97 lines (83 loc) · 1.91 KB
/
soundcloud.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
require 'rubygems'
require 'sinatra'
require 'haml'
require 'less'
require 'dm-core'
require 'dm-types'
require 'dm-migrations'
require 'json'
DataMapper::Logger.new($stdout, :debug)
#DataMapper.setup(:default, 'sqlite::memory:')
DataMapper.setup(:default, {
:adapter => 'sqlite3',
:host => 'localhost',
:database => 'db/uploads.db'
})
class Upload
include DataMapper::Resource
property :sid, String, :key => true
property :path, FilePath, :required => true
property :url, URI, :required => true
property :title, String, :required => false
property :error, String, :required => false
end
DataMapper.finalize
DataMapper.auto_migrate!
set :filesdir, Proc.new { "#{root}/files" }
get '/' do
haml :main
end
get '/files/:sid' do
file = Upload.get params[:sid]
send_file file.path, :disposition => 'attachment'
end
get '/files' do
"You asked for all the files"
end
get '/info/:sid' do
content_type :json
upload = Upload.get params[:sid]
unless upload.nil?
{
:sid => params[:sid],
:path => upload.path,
:url => upload.url
}.to_json
else
err = "Could not find upload with sid #{params[:sid]}"
{
:sid => params[:sid],
:error => err
}.to_json
end
end
post '/files' do
unless params[:file]
@error = "No file selected"
else
sid = params[:sid]
tmp = params[:file][:tempfile]
filename = params[:file][:filename]
asd = params[:title]
title = (params[:title] != '') ? params[:title] : nil
path = "#{options.filesdir}/#{filename}"
url = "files/#{sid}"
upload = Upload.create(
:sid => sid,
:path => path,
:url => url,
:title => title
)
File.open(path, 'w+') do |file|
file << tmp.read
end
halt 200
end
end
get '/views/:style' do
content_type 'text/css', :charset => 'utf-8'
less :style
end
not_found do
'Sorry mate!'
end