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

pulibrary / orangetheses / fc8557fc-0887-49ac-a9c1-0b6aeae04db7

10 Oct 2024 07:55PM UTC coverage: 85.521% (-1.8%) from 87.326%
fc8557fc-0887-49ac-a9c1-0b6aeae04db7

Pull #86

circleci

jrgriffiniii
troubleshooting the API request failures
Pull Request #86: Restructuring the generation of access restriction text during indexing and implementing a Rake Task for indexing OAI Items using a given Set ID

12 of 31 new or added lines in 4 files covered. (38.71%)

4 existing lines in 1 file now uncovered.

632 of 739 relevant lines covered (85.52%)

17.9 hits per line

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

67.44
/lib/orangetheses/harvester.rb
1
# frozen_string_literal: true
2

3
require 'oai'
1✔
4
require 'tmpdir'
1✔
5

6
module Orangetheses
1✔
7
  class Harvester
1✔
8
    def self.default_server
1✔
9
      return 'https://dataspace-staging.princeton.edu/oai/request' if test?
2✔
10

11
      'https://dataspace.princeton.edu/oai/request'
2✔
12
    end
13

14
    def self.default_metadata_prefix
1✔
15
      'oai_dc'
3✔
16
    end
17

18
    def self.default_verb
1✔
19
      'ListRecords'
3✔
20
    end
21

22
    def self.default_set
1✔
23
      'com_88435_dsp019c67wm88m'
3✔
24
    end
25

26
    # @param [Hash] opts  options to pass to the client
27
    # @option opts [String] :dir  Directory in which to save files. A temporary
28
    #   directory will be created if this option is not included.
29
    # @option opts [String] :server ('http://dataspace.princeton.edu/oai/')
30
    # @option opts [String] :metadata_prefix ('oai_dc')
31
    # @option opts [String] :verb ('ListRecords')
32
    # @option opts [String] :set ('hdl_88435_dsp019c67wm88m')
33
    def initialize(dir: Dir.mktmpdir,
1✔
34
                   server: nil,
35
                   metadata_prefix: nil,
36
                   verb: nil,
37
                   set: nil)
38

39
      @dir = dir
3✔
40
      @server = server || self.class.default_server
3✔
41
      @metadata_prefix = metadata_prefix || self.class.default_metadata_prefix
3✔
42
      @verb = verb || self.class.default_verb
3✔
43
      @set = set || self.class.default_set
3✔
44
    end
45

46
    # @return [Array<String>] A list of directories containing metadata records
47
    def harvest_all
1✔
48
      dirs = []
×
49
      dir = nil
×
50
      client.list_records(headers).full.each_with_index do |record, i|
×
51
        if (i % 1000).zero?
×
52
          dir = Dir.mktmpdir(nil, @dir)
×
53
          dirs << dir
×
54
        end
55
        File.open(File.join(dir, "#{i}.xml"), 'w') do |f|
×
56
          f.write(record.metadata)
×
57
        end
58
      end
59
      dirs
×
60
    end
61

62
    # Index all records into the Solr Collection
63
    def index_all(indexer)
1✔
64
      client.list_records(headers).full.each_with_index do |record, _i|
×
65
        indexer.index(record.metadata)
×
66
      rescue StandardError => e
NEW
67
        Rails.logger.warn("Error indexing the OAI-PMH record #{record.metadata}: #{e}")
×
68
      end
69
    end
70

71
    def index_item(indexer:, identifier:)
1✔
72
      record_response = client.get_record(identifier:)
1✔
73
      record = record_response.record
1✔
74

75
      indexer.index(record.metadata)
1✔
76
    rescue StandardError => e
77
      Rails.logger.warn("Error indexing the OAI-PMH record using #{identifier}: #{e}")
×
78
    end
79

80
    private
1✔
81

82
    def headers
1✔
83
      {
84
        metadataPrefix: @metadata_prefix,
×
85
        set: @set
86
      }
87
    end
88

89
    def client
1✔
90
      @client ||= OAI::Client.new(@server)
3✔
91
    end
92
  end
93
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