module Sinatra::StoplightAdmin

Public Class Methods

registered(app) click to toggle source
# File lib/sinatra/stoplight_admin.rb, line 111
def self.registered(app)
  app.helpers StoplightAdmin::Helpers

  app.set :data_store, nil
  app.set :views, File.join(File.dirname(__FILE__), 'views')

  app.get '/' do
    ls    = lights
    stats = stat_params(ls)

    haml :index, locals: stats.merge(lights: ls)
  end

  app.get '/stats' do
    ls    = lights
    stats = stat_params(ls)

    json({stats: stats, lights: ls})
  end

  app.post '/lock' do
    with_lights { |l| lock(l) }
    redirect to('/')
  end

  app.post '/unlock' do
    with_lights { |l| unlock(l) }
    redirect to('/')
  end

  app.post '/green' do
    with_lights { |l| green(l) }
    redirect to('/')
  end

  app.post '/red' do
    with_lights { |l| red(l) }
    redirect to('/')
  end

  app.post '/green_all' do
    data_store.names
      .reject { |l| Stoplight::Light.new(l) {}.color == Stoplight::Color::GREEN }
      .each { |l| green(l) }
    redirect to('/')
  end
end