Sha256: 7f54b3a12b450379ebddf6e777a0f5ebce85f2a00dc2eab8f1053336846c242e

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

require "goliath/server"
require "log4r"

module Slideoff
  class Server
    DEFAULT_PORT = Goliath::Server::DEFAULT_PORT
    DEFAULT_ADDRESS = Goliath::Server::DEFAULT_ADDRESS

    attr_reader :dir, :options, :remote_key, :host, :port

    def initialize(options)
      @dir = Dir.pwd
      @options = options
      @remote_key = @options.delete(:remote_key) || rand(1_000_000).to_s(16)
      @host = @options.delete(:host) || DEFAULT_ADDRESS
      @port = @options.delete(:port) || DEFAULT_PORT
    end

    def start
      server = Goliath::Server.new(host, port)
      server.options = options
      server.app = Slideoff::Routes.run(presentation, :remote_key => remote_key)
      server.logger = logger

      server.start
    end

    def presentation
      Slideoff::Presentation.new(dir)
    end

    private

    def logger
      logger = Log4r::Logger.new(self.class.name)
      logger.add(stdout_outputter)
      logger.level = Log4r::DEBUG
      logger.info("Starting server on http://#{host}:#{port}. Rock your presentation!")
      logger
    end

    def stdout_outputter
      Log4r::StdoutOutputter.new('console', :formatter => log_formatter)
    end

    def log_formatter
      Log4r::PatternFormatter.new(:pattern => "[%p:%l] %d %m")
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
slideoff-0.4.0 lib/slideoff/server.rb
slideoff-0.3.5 lib/slideoff/server.rb
slideoff-0.3.4 lib/slideoff/server.rb
slideoff-0.3.3 lib/slideoff/server.rb
slideoff-0.3.2 lib/slideoff/server.rb
slideoff-0.3.1 lib/slideoff/server.rb
slideoff-0.3 lib/slideoff/server.rb