|
@@ -1,16 +1,42 @@
|
|
|
require 'sinatra'
|
|
|
+require 'data_mapper'
|
|
|
+require 'json'
|
|
|
+
|
|
|
+DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/hacklabbo.db")
|
|
|
+
|
|
|
+class Entry
|
|
|
+ include DataMapper::Resource
|
|
|
+ property :id, Serial
|
|
|
+ property :open, Boolean
|
|
|
+ property :date, DateTime, default: Time.now
|
|
|
+end
|
|
|
+
|
|
|
+DataMapper.finalize
|
|
|
+Entry.auto_upgrade!
|
|
|
|
|
|
set :secret_token, "unsecure_token"
|
|
|
-set :open, false
|
|
|
|
|
|
get '/' do
|
|
|
- erb :index
|
|
|
+ entry = Entry.all(limit: 1, order: [ :date.desc ])
|
|
|
+ state = {
|
|
|
+ open: false,
|
|
|
+ date: nil
|
|
|
+ }
|
|
|
+ unless entry.empty?
|
|
|
+ state[:open] = entry[0][:open]
|
|
|
+ state[:date] = entry[0][:date]
|
|
|
+ end
|
|
|
+ erb :index, locals: { state: state }
|
|
|
end
|
|
|
|
|
|
get '/hacklabbo/open/:token' do |token|
|
|
|
if token == settings.secret_token
|
|
|
- settings.open = true
|
|
|
- 200
|
|
|
+ entry = Entry.create(open: true)
|
|
|
+ if entry.saved?
|
|
|
+ 200
|
|
|
+ else
|
|
|
+ 500
|
|
|
+ end
|
|
|
else
|
|
|
403
|
|
|
end
|
|
@@ -18,8 +44,12 @@ end
|
|
|
|
|
|
get '/hacklabbo/close/:token' do |token|
|
|
|
if token == settings.secret_token
|
|
|
- settings.open = false
|
|
|
- 200
|
|
|
+ entry = Entry.create(open: false)
|
|
|
+ if entry.saved?
|
|
|
+ 200
|
|
|
+ else
|
|
|
+ 500
|
|
|
+ end
|
|
|
else
|
|
|
403
|
|
|
end
|