Sha256: d2bd538e38256d67510770d5ee41c2f5da1932c64ab23d383a80fa19ff7a416f

Contents?: true

Size: 885 Bytes

Versions: 6

Compression:

Stored size: 885 Bytes

Contents

require 'time'
require 'rack/utils'
require 'rack/mime'

require 'conjur/webserver/renderer'

module Conjur
  module WebServer
    class Home
      def initialize(root)
        @root = root
      end

      # From Rack::File
      def call(env)
        path = File.expand_path(INDEX, @root)
        renderer = Renderer.new @root

        page = File.read(path)
        files = [path]

        last_modified = files.map(&File.method(:mtime)).max.httpdate

        return [304, {}, []] if env['HTTP_IF_MODIFIED_SINCE'] == last_modified

        size = Rack::Utils.bytesize(page)

        headers = {
          "Last-Modified"  => last_modified,
          "Content-Type"   => "text/html",
          "Content-Length" => size.to_s
        }

        [200, headers, env["REQUEST_METHOD"] == "HEAD" ? [] : [page]]
      end

      private

      INDEX = 'index.html'.freeze
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
conjur-asset-ui-1.6.0 lib/conjur/webserver/home.rb
conjur-asset-ui-beta-2.0.0 lib/conjur/webserver/home.rb
conjur-asset-ui-beta-1.6.2 lib/conjur/webserver/home.rb
conjur-asset-ui-beta-1.6.1 lib/conjur/webserver/home.rb
conjur-asset-ui-beta-1.6.0 lib/conjur/webserver/home.rb
conjur-asset-ui-beta-1.5.0 lib/conjur/webserver/home.rb