class PdfSearch::WebServer

Attributes

daemon[RW]

Public Class Methods

new(search_index, debug_mode = false) click to toggle source
# File lib/web_server.rb, line 7
def initialize(search_index, debug_mode = false)
  @search_index = search_index
  @debug_mode = (ENV['DEBUG_PDF_SEARCH'] == '1') || debug_mode
end

Public Instance Methods

auth_defined?() click to toggle source
# File lib/web_server.rb, line 33
def auth_defined?
  [ENV['PDF_SEARCH_USERNAME'], ENV['PDF_SEARCH_PASSWORD']].all? do |env_var|
    env_var != nil && env_var != ''
  end
end
basic_auth() click to toggle source
# File lib/web_server.rb, line 12
def basic_auth
  return @basic_auth if @basic_auth != nil

  config = { :Realm => 'BanalBI Pdf-Search' }

  htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'banalbi-pdf-search'
  htpasswd.set_passwd config[:Realm], ENV['PDF_SEARCH_USERNAME'] , ENV['PDF_SEARCH_PASSWORD']
  htpasswd.flush

  config[:UserDB] = htpasswd

  @basic_auth = WEBrick::HTTPAuth::BasicAuth.new config
end
index(request, response) click to toggle source
# File lib/web_server.rb, line 26
def index(request, response)
  search_view = ::PdfSearch::SearchView.new(@search_index)
  response.status = 200
  response['Content-Type'] = 'text/html'
  response.body = search_view.render
end
response_html(es_response) click to toggle source
# File lib/web_server.rb, line 67
def response_html(es_response)
  results = es_response['hits']['hits']
  results.map do |result|
    "<li>#{result["_source"]["text"]}</li>"
  end.join("\n")
end
start() click to toggle source
# File lib/web_server.rb, line 50
def start
  start_server = lambda do
    server = WEBrick::HTTPServer.new(:Port => 80)

    server.mount_proc '/', &method(:index)
    server.mount_proc '/search', &method(:search)

    server.start
  end

  if @debug_mode
    start_server.call
  else
          self.daemon = Daemons.call(multiple: true, &start_server)
  end
end