123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- require 'sinatra'
- require 'data_mapper'
- require 'json'
- DataMapper::setup(:default, "sqlite3:///hlbb/data/hacklabbo.db")
- configure {
- set :server, :puma
- }
- class Entry
- include DataMapper::Resource
- property :id, Serial
- property :open, Boolean
- property :date, DateTime
- end
- DataMapper.finalize
- Entry.auto_upgrade!
- set :secret_token, ENV["hl_secret_token"]
- get '/' do
- entry = Entry.all(limit: 1, order: [ :id.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: [ :id.desc ])
- erb :rss, locals: { entries: entries }
- end
- get '/hacklabbo/state.json' do
- entry = Entry.all(limit: 1, order: [ :id.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/space.json' do
- entry = Entry.all(limit: 1, order: [ :id.desc ])
- state = {
- open: false,
- date: nil
- }
- unless entry.empty?
- state[:open] = entry[0][:open]
- state[:date] = entry[0][:date]
- end
- content_type :json
- {
- api: "0.13",
- space: "hacklabbo",
- logo: "http://thecatapi.com/api/images/get?format=src&type=jpg",
- url: "https://hacklabbo.indivia.net",
- location: {
- address: "XM24, Via Aristotile Fioravanti 24, Bologna",
- lat: 44.512243,
- lon: 11.341099
- },
- issue_report_channels: [
- "ml"
- ],
- contact: {
- ml: "hacklabbo@indivia.net"
- },
- state: {
- open: state[:open]
- }
- }.to_json
- end
- get '/hacklabbo/open/:token' do |token|
- if token == settings.secret_token
- entry = Entry.create(open: true, date: DateTime.now)
- 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, date: DateTime.now)
- if entry.saved?
- 200
- else
- 500
- end
- else
- 403
- end
- end
|