-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.rb
62 lines (52 loc) · 1.46 KB
/
app.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
require 'sinatra'
require 'dragonfly'
require 'RMagick'
require 'data_mapper'
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db/app.db")
app = Dragonfly.app
Dragonfly.app.configure do
plugin :imagemagick
end
class ImageLogger
include DataMapper::Resource
property :id, Serial
property :slug, String
property :data, Text
property :created_at, DateTime
end
DataMapper.auto_upgrade!
get '/' do
"Create an image by just a string after the url."
end
get "/:slug" do |slug|
background_colors = %w(#EEEEEE #F2F2F2 #F5B7AB #EE836E #FFE8AA #FEDE88 #C5E5DE #95D1C4 #B1E0EC #6DC5DC)
ImageLogger.create(:slug => slug, :data => "#{Time.now.to_s}\n#{request.user_agent}\n#{request.ip}\n", :created_at => Time.now)
logs = ImageLogger.all(:slug => slug)
data = []
logs.each {|l| data << l['data']}
Dragonfly.app.generate(
:text,
"#{slug}\n\n#{data.join("\n")}",
"font-size" => 14,
"padding" => '10',
"background-color" => background_colors[rand(background_colors.count)]
).to_response(env)
end
get "/:slug/log" do |slug|
logs = ImageLogger.all(:slug => slug)
data = []
logs.each {|l| data << l['data'].gsub("\n", "<br/>")}
"#{data.join("<br/>")}"
end
#remove all logs
delete "/:slug/destroy" do |slug|
logs = ImageLogger.all(:slug => slug)
logs.destroy
redirect "/#{slug}/log"
end
#remove the last log
delete "/:slug/remove" do |slug|
log = ImageLogger.last(:slug => slug)
log.destroy
redirect "/#{slug}/log"
end