-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdropfolio.rb
68 lines (50 loc) · 1.26 KB
/
dropfolio.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
require 'rubygems'
require 'sinatra'
require 'erb'
require 'dropio'
require 'digest/sha1'
# INITIALIZE THE APP
configure do
Dropio::Config.api_key = "ENTER_YOUR_DROPIO_API_KEY_HERE" # go to http://api.drop.io to get a free developer key
SALT = "___changemetosomethingrandom___"
end
# URL ACTIONS
get '/' do
erb :new, :layout => :application
end
post '/' do
@drop = Dropio::Drop.create(:description => params[:description])
@drop.admin_password = generate_password(@drop.name)
@drop.save
redirect "/#{@drop.name}?admin=true", 303
end
get '/:dropname' do
@drop = Dropio::Drop.find(params[:dropname])
@assets = @drop.assets
if is_admin?
@upload_embed = @drop.upload_code
end
erb :show, :layout => :application
end
delete '/:dropname' do
@drop = Dropio::Drop.find(params[:dropname],generate_password(params[:dropname]))
@drop.destroy!
redirect "/"
end
# HELPER FUNCTIONS
helpers do
def is_admin?
@is_admin ||= (params[:admin] == 'true')
end
def generate_password(dropname)
Digest::SHA1.hexdigest(dropname + SALT)[0...5]
end
def display_asset(asset)
case asset.type
when "image"
"<img src='#{asset.converted || '/converting.png'}'/>"
else
asset.embed_code
end
end
end