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
search(request, response)
click to toggle source
# File lib/web_server.rb, line 39 def search(request, response) if auth_defined? basic_auth.authenticate(request, response) end query = ::PdfSearch::ElasticSearchQuery.new(JSON.parse(request.body), @search_index) elastic_response = ::PdfSearch::ElasticSearchClient.search index: 'pdf_pages', body: query.to_hash response.body = response_html(elastic_response) 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