#!/usr/bin/env ruby require 'bundler/setup' require 'sinatra' require 'yaml' require 'thin' if $PROGRAM_NAME == __FILE__ require_relative 'init' require_relative 'report' $config = YAML.load(File.read(SOURCES)) $owners = ($config['relays'] + $config['jetstreams']).map { |x| x.is_a?(Hash) ? [x['host'], x] : [x, nil] }.then { Hash[it] } helpers do def format_num(n) n.to_s.reverse.gsub(/(\d\d\d(?!$))/, "\\1,").reverse end def owner_link(report) if data = $owners[report.host] if data['owner'] && data['owner_link'] %(#{data['owner']}) elsif data['owner'].to_s.start_with?('@') %(#{data['owner']}) elsif data['owner'] data['owner'] else nil end end end end get '/' do @last_test = Report.maximum(:start_time) if @last_test @reports = Report.where(start_time: @last_test).order('users DESC, connected DESC').to_a @max_users = @reports.first.users end erb :index end