oai 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/oai/provider/response/record_response.rb +20 -2
- data/lib/oai/provider/response.rb +16 -9
- data/test/provider/tc_simple_provider.rb +16 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: '0739f4d294a977be9445e06f872feb4aa421ecc35c65d4ba4c07af0f48f98070'
         | 
| 4 | 
            +
              data.tar.gz: b444b8a7f6cfbeccf045e6794b2d6d001dc319fcf362383404735215adcb3cfa
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0edac39be81e755d256f5f39b0772d8568450e2dd6bc837982ad3568547e8ee46b94c3f17d14e69ad94a1ef95458992f9538108f919a3623b9994a42b11203f5
         | 
| 7 | 
            +
              data.tar.gz: c182374267d3acf402f9f9a24c3342739f4e3b72fac229076237126444e7aa674acaea7ae8122de71bc7aa9615cfe9a5864fe3ed4e6c31e3a8f848ed27db41aa
         | 
    
        data/README.md
    CHANGED
    
    
| @@ -3,8 +3,26 @@ module OAI::Provider::Response | |
| 3 3 | 
             
                def self.inherited(klass)
         | 
| 4 4 | 
             
                  klass.valid_parameters    :metadata_prefix, :from, :until, :set
         | 
| 5 5 | 
             
                  klass.default_parameters  :metadata_prefix => "oai_dc",
         | 
| 6 | 
            -
                       :from =>  | 
| 7 | 
            -
                       :until =>  | 
| 6 | 
            +
                       :from => method(:default_from).to_proc,
         | 
| 7 | 
            +
                       :until => method(:default_until).to_proc
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def self.default_from(response)
         | 
| 11 | 
            +
                  value = Time.parse(response.provider.model.earliest.to_s).utc
         | 
| 12 | 
            +
                  if response.options[:until]
         | 
| 13 | 
            +
                    u = parse_date(response.options[:until])
         | 
| 14 | 
            +
                    value = value.to_date if u.is_a? Date
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                  value
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def self.default_until(response)
         | 
| 20 | 
            +
                  value = Time.parse(response.provider.model.latest.to_s).utc
         | 
| 21 | 
            +
                  if response.options[:from]
         | 
| 22 | 
            +
                    f = parse_date(response.options[:from])
         | 
| 23 | 
            +
                    value = value.to_date if f.is_a? Date
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                  value
         | 
| 8 26 | 
             
                end
         | 
| 9 27 |  | 
| 10 28 | 
             
                # emit record header
         | 
| @@ -40,6 +40,21 @@ module OAI | |
| 40 40 | 
             
                    yield @builder
         | 
| 41 41 | 
             
                  end
         | 
| 42 42 | 
             
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                protected
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                def self.parse_date(value)
         | 
| 47 | 
            +
                  return value if value.respond_to?(:strftime)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  if value[-1] == "Z"
         | 
| 50 | 
            +
                    Time.strptime(value, "%Y-%m-%dT%H:%M:%S%Z").utc
         | 
| 51 | 
            +
                  else
         | 
| 52 | 
            +
                    Date.strptime(value, "%Y-%m-%d")
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
                rescue ArgumentError => e
         | 
| 55 | 
            +
                  raise OAI::ArgumentException.new, "unparsable date: '#{value}'"
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 43 58 | 
             
                private
         | 
| 44 59 |  | 
| 45 60 | 
             
                def header
         | 
| @@ -89,15 +104,7 @@ module OAI | |
| 89 104 | 
             
                end
         | 
| 90 105 |  | 
| 91 106 | 
             
                def parse_date(value)
         | 
| 92 | 
            -
                   | 
| 93 | 
            -
                  
         | 
| 94 | 
            -
                  if value[-1] == "Z"
         | 
| 95 | 
            -
                    Time.strptime(value, "%Y-%m-%dT%H:%M:%S%Z").utc
         | 
| 96 | 
            -
                  else
         | 
| 97 | 
            -
                    Date.strptime(value, "%Y-%m-%d")
         | 
| 98 | 
            -
                  end
         | 
| 99 | 
            -
                rescue ArgumentError => e
         | 
| 100 | 
            -
                  raise OAI::ArgumentException.new, "unparsable date: '#{value}'"
         | 
| 107 | 
            +
                  self.class.parse_date(value)
         | 
| 101 108 | 
             
                end
         | 
| 102 109 |  | 
| 103 110 | 
             
                def internalize(hash = {})
         | 
| @@ -49,6 +49,22 @@ class TestSimpleProvider < Test::Unit::TestCase | |
| 49 49 | 
             
                assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
         | 
| 50 50 | 
             
              end
         | 
| 51 51 |  | 
| 52 | 
            +
              def test_list_records_with_from_constraints
         | 
| 53 | 
            +
                assert_nothing_raised { REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc')) }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                total = @model.find(:all).size
         | 
| 56 | 
            +
                doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', from: "2002-10-05"))
         | 
| 57 | 
            +
                assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def test_list_records_with_until_constraints
         | 
| 61 | 
            +
                assert_nothing_raised { REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc')) }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                total = @model.find(:all).size
         | 
| 64 | 
            +
                doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', until: "2002-11-05"))
         | 
| 65 | 
            +
                assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
             | 
| 52 68 | 
             
              def test_list_records_with_set_equal_a
         | 
| 53 69 | 
             
                total = @model.find(:all, :set => 'A').size
         | 
| 54 70 | 
             
                doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', :set => 'A'))
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: oai
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.2. | 
| 4 | 
            +
              version: 1.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ed Summers
         | 
| 8 8 | 
             
            autorequire: oai
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022-04- | 
| 11 | 
            +
            date: 2022-04-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: builder
         |