Class: PdfSearch::WebServer

Inherits:
Object
  • Object
show all
Defined in:
lib/web_server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#daemonObject

Returns the value of attribute daemon.



5
6
7
# File 'lib/web_server.rb', line 5

def daemon
  @daemon
end

Instance Method Details

#basic_authObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/web_server.rb', line 7

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

  puts config.inspect

  @basic_auth = WEBrick::HTTPAuth::BasicAuth.new config
end

#response_html(es_response) ⇒ Object



49
50
51
52
53
54
# File 'lib/web_server.rb', line 49

def response_html(es_response)
  results = es_response['hits']['hits']
  results.map do |result|
    "<li>#{result["_source"]["text"]}</li>"
  end.join("\n")
end

#startObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/web_server.rb', line 23

def start
  start_server = lambda do
    server = WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => ::PdfSearch.relative_to_gem_path(['html']))

    server.mount_proc '/search' do |request, response|
      if [ENV['PDF_SEARCH_USERNAME'], ENV['PDF_SEARCH_PASSWORD']].all? do |env_var|
          env_var != nil && env_var != ''
        end

        basic_auth.authenticate(request, response)
      end
      query = request.query["query"]
      elastic_response = ::PdfSearch::ElasticSearchClient.search q: "text:#{query}"
      response.body = response_html(elastic_response)
    end

    server.start
  end

  if ENV['DEBUG_PDF_SEARCH'] == '1'
    start_server.call
  else
   self.daemon = Daemons.call(multiple: true, &start_server)
  end
end