123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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"
- get '/' do
- 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 '/rss.xml' do
- entries = Entry.all(limit: 10, order: [ :date.desc ])
- erb :rss, locals: { entries: entries }
- end
- get '/hacklabbo/state.json' do
- 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
- content_type :json
- state.to_json
- end
- get '/hacklabbo/open/:token' do |token|
- if token == settings.secret_token
- entry = Entry.create(open: true)
- if entry.saved?
- 200
- else
- 500
- end
- else
- 403
- end
- end
- get '/hacklabbo/close/:token' do |token|
- if token == settings.secret_token
- entry = Entry.create(open: false)
- if entry.saved?
- 200
- else
- 500
- end
- else
- 403
- end
- end
|