# if ENV['SKYLIGHT_AUTHENTICATION'] # # # require 'skylight/sinatra' # # require 'tool/thread_local' # # Skylight.start! # # # # module Travis # # module Api # # module ConditionalSkylight # # FEATURES = Tool::ThreadLocal.new # # CHECK_FREQUENCY = 120 # # NOT_JSON = %r(\.(xml|png|txt|atom|svg)$) # # # # module Middleware # # ::Skylight::Middleware.send(:prepend, self) # # def call(env) # # if ConditionalSkylight.track?(env) # # super(env) # # else # # t { "skipping middleware (condition not met)".freeze } # # @app.call(env) # # end # # end # # end # # # # extend self # # # # def track?(env) # # return false unless feature_active? :skylight # # return false if feature_active? :skylight_json_only and env['PATH_INFO'.freeze] =~ NOT_JSON # # true # # end # # # # def feature_active?(feature) # # last_clear = Time.now.to_i - FEATURES[:last_clear].to_i # # # # if last_clear > CHECK_FREQUENCY # # FEATURES.clear # # FEATURES[:last_clear] = Time.now.to_i # # end # # # # FEATURES.fetch(feature) { FEATURES[feature] = Travis::Features.feature_active?(feature) } # # end # # end # # end # # end # # else # Travis.logger.info('SKYLIGHT_AUTHENTICATION not set, skipping Skylight.') # end