justincampbell/whipped-cream

View on GitHub
lib/whipped-cream/web.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'sinatra'

module WhippedCream
  # A Sinatra application skeleton that is used to build up the web server
  # for this plugin.
  class Web < Sinatra::Application
    get '/' do
      find_remote_servers
      erb :index
    end

    private

    def controls
      runner.plugin.controls
    end

    def runner
      Runner.instance
    end

    def title
      runner.name
    end

    def remote_servers
      @remote_servers ||= []
    end

    def find_remote_servers
      @remote_servers = cli.discover.map do |service|
        cli.resolve_service(service)
      end.reject do |server|
        server[:name] == title
      end
    end

    def cli
      @CLI ||= CLI.new
    end

    def server_link(server)
      address = server[:address]
      port    = server[:port]
      name    = server[:name]

      "<a href=\"http://#{address}:#{port}\">#{name}</a>"
    end
  end
end