• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / allsearch_api / a8d8fc0f-d218-4ff0-8a65-91e6d0e0bf83

02 Dec 2025 04:00PM UTC coverage: 99.903%. Remained the same
a8d8fc0f-d218-4ff0-8a65-91e6d0e0bf83

push

circleci

web-flow
Merge pull request #414 from pulibrary/query-in-rom

Re-implement library database full text search in ROM-rb

29 of 29 new or added lines in 3 files covered. (100.0%)

68 existing lines in 12 files now uncovered.

1035 of 1036 relevant lines covered (99.9%)

105.75 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/app/models/libanswers.rb
1
# frozen_string_literal: true
2

3
# This class is responsible for querying Libanswers for FAQs
4
class Libanswers
3✔
5
  attr_reader :query_terms
3✔
6

7
  include Parsed
3✔
8

9
  def initialize(query_terms:)
3✔
UNCOV
10
    @query_terms = CGI.escape(query_terms)
12✔
11
  end
12

13
  def number
3✔
UNCOV
14
    service_response['search']['numFound']
8✔
15
  end
16

17
  def more_link
3✔
UNCOV
18
    "https://faq.library.princeton.edu/search/?t=0&q=#{query_terms.gsub(/\s+/, '+')}"
14✔
19
  end
20

21
  def documents
3✔
UNCOV
22
    service_response['search']['results']
7✔
23
  end
24

25
  def service_response
3✔
UNCOV
26
    @service_response ||= Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
16✔
UNCOV
27
      response = http.request(request)
10✔
UNCOV
28
      if response.code == '200'
9✔
UNCOV
29
        JSON.parse(response.body)
7✔
30
      else
31
        { 'search' => { 'results' => [], 'numFound' => 0 } }
2✔
32
      end
33
    end
34
  end
35

36
  private
3✔
37

38
  def uri
3✔
UNCOV
39
    URI.parse "https://faq.library.princeton.edu/api/1.1/search/#{query_terms}?iid=344&limit=3"
30✔
40
  end
41

42
  def request
3✔
UNCOV
43
    libanswers_request = Net::HTTP::Get.new(uri)
10✔
44

UNCOV
45
    token = OAuthToken.find_or_create_by({ service: 'libanswers',
10✔
46
                                           endpoint: 'https://faq.library.princeton.edu/api/1.1/oauth/token' }).token
UNCOV
47
    libanswers_request['Authorization'] = "Bearer #{token}"
9✔
UNCOV
48
    libanswers_request
9✔
49
  end
50
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc