Sha256: 8583c2906a4cdac246b792606f474785b21ea847079d29b56b39617c94ad4894

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true
require "erb"
require "sinatra/base"

require "zhong"
require "zhong/web_helpers"

module Zhong
  class Web < Sinatra::Base
    enable :sessions
    use ::Rack::Protection, use: :authenticity_token unless ENV["RACK_ENV"] == "test"

    if ENV["ZHONG_WEB_USERNAME"] && ENV["ZHONG_WEB_PASSWORD"]
      use Rack::Auth::Basic, "Sorry." do |username, password|
        username == ENV["ZHONG_WEB_USERNAME"] and password == ENV["ZHONG_WEB_PASSWORD"]
      end
    end

    if ENV["RACK_ENV"] == "development"
      before do
        STDERR.puts "[params] #{params}" unless params.empty?
      end
    end

    set :root, File.expand_path(File.dirname(__FILE__) + "/../../web")
    set :public_folder, proc { "#{root}/assets" }
    set :views, proc { "#{root}/views" }

    helpers WebHelpers

    get "/" do
      index

      erb :index
    end

    post "/" do
      if params["disable"]
        job = Zhong.jobs[params["disable"]]

        job.disable if job
      elsif params["enable"]
        job = Zhong.jobs[params["enable"]]

        job.enable if job
      end

      index

      erb :index
    end

    def index
      @jobs = Zhong.jobs.values
      @last_runs = zhong_mget(@jobs, "last_ran")
      @disabled = zhong_mget(@jobs, "disabled")
      @hosts = Zhong.all_heartbeats
    end

    def zhong_mget(jobs, key)
      keys = jobs.map(&:to_s)
      ret = Zhong::Util.safe_mget(keys.map { |j| "zhong:#{key}:#{j}" })
      Hash[keys.map { |j| [j, ret["zhong:#{key}:#{j}"]] }]
    end
  end
end

if defined?(::ActionDispatch::Request::Session) && !::ActionDispatch::Request::Session.respond_to?(:each)
  # mperham/sidekiq#2460
  # Rack apps can't reuse the Rails session store without
  # this monkeypatch
  class ActionDispatch::Request::Session
    def each(&block)
      hash = self.to_hash
      hash.each(&block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zhong-0.1.6 lib/zhong/web.rb