iiif-presentation 0.2.0 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5d2ae4eba89da3249e90fd07899b0c959a2ad6d1
4
- data.tar.gz: 2b9d3fb56e25a15c4d66f1d8b44488a873a3adba
2
+ SHA256:
3
+ metadata.gz: 39369e50dc0a31ebfdac97d49008eb26e020ac21c595c400906dc6a54de45097
4
+ data.tar.gz: e127162464e102ef0d2ee9800cf81713e0cd681edde07e3123bf5353b1b1fb90
5
5
  SHA512:
6
- metadata.gz: 30779f16f6794adfac654ea104a49a5d4970a28248fde2b93fdc941e55f2da3bb050fd046ea2fdcde639886ce3cc3a0a71550be74acbce139cd8c123928944a4
7
- data.tar.gz: 6c14f0bf0d3c3a5ea647372267634768f8a6ef9dde304c68a5ed0c598e22f937fcd4428d653cb73cd2871123f00f828cdeb56626d0a6bf8d37a786637df5cbdf
6
+ metadata.gz: 230c5a28d5e5dbc405b32f9e6ca1f3d60e7f8e2d3cbbeab85f9650dbf24bb701d0a1c6af1b29d1cd844ac971e11e1ab8a65644cf10f33778e1465d8b1fcc01ad
7
+ data.tar.gz: 0ab62efe7287d7eaae0ae7ab2a569b18cd2238753569e15857478976a834e5746df1dd919befe211299f31fae63822a735e25fe9da22b5e74b7d05b08457e608
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ "development" ]
13
+ pull_request:
14
+ branches: [ "development" ]
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ test:
21
+
22
+ runs-on: ubuntu-latest
23
+ strategy:
24
+ matrix:
25
+ ruby-version: ['2.7', '3.0', '3.1', '3.2']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rake
data/Gemfile CHANGED
@@ -1,2 +1,10 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
+
4
+ if ENV['RAILS_VERSION']
5
+ gem 'activesupport', ENV['RAILS_VERSION']
6
+ end
7
+
8
+ if ENV['FARADAY_VERSION']
9
+ gem 'faraday', ENV['FARADAY_VERSION']
10
+ end
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  # O'Sullivan: A Ruby API for working with IIIF Presentation manifests
2
2
 
3
- [![Build Status](https://travis-ci.org/iiif-prezi/osullivan.svg?branch=development)](https://travis-ci.org/iiif-prezi/osullivan)
4
3
  [![Coverage Status](https://coveralls.io/repos/github/iiif-prezi/osullivan/badge.svg?branch=development)](https://coveralls.io/github/iiif-prezi/osullivan?branch=development)
5
4
 
6
5
 
@@ -82,7 +81,7 @@ puts manifest.to_json(pretty: true, force: true) # force: true skips validations
82
81
  ## Parsing Existing Objects
83
82
 
84
83
  Use `IIIF::Service#parse`. It will figure out what the object
85
- should be, based on `@type`, and fall back to `ActiveSupport::OrderedHash` when
84
+ should be, based on `@type`, and fall back to `Hash` when
86
85
  it can't e.g.:
87
86
 
88
87
  ```ruby
@@ -133,7 +132,7 @@ puts obj.class
133
132
  puts obj.see_also.class
134
133
 
135
134
  > IIIF::Presentation::Manifest
136
- > ActiveSupport::OrderedHash
135
+ > Hash
137
136
  ```
138
137
 
139
138
  ## Validation and Exceptions
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 1.1.0
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency 'coveralls'
21
21
  spec.add_development_dependency 'webmock'
22
22
  spec.add_development_dependency 'multi_json'
23
- spec.add_development_dependency 'vcr', '~> 2.9.3'
23
+ spec.add_development_dependency 'vcr', '~> 5'
24
24
 
25
25
  spec.add_dependency 'json'
26
26
  spec.add_dependency 'activesupport', '>= 3.2.18'
@@ -8,7 +8,7 @@ module IIIF
8
8
  # * reject
9
9
  # * replace
10
10
 
11
- def_delegators :@data, :[], :[]=, :camelize_keys, :delete, :empty?,
11
+ def_delegators :@data, :[], :[]=, :camelize_keys, :delete, :dig, :empty?,
12
12
  :fetch, :has_key?, :has_value?, :include?, :insert, :insert_after,
13
13
  :insert_before, :key, :key?, :keys, :length, :member?, :shift, :size,
14
14
  :snakeize_keys, :store, :unshift, :value?, :values
@@ -46,8 +46,7 @@ module IIIF
46
46
  end
47
47
 
48
48
  # Initialize a Presentation node
49
- # @param [Hash] hsh - Anything in this hash will be added to the Object.'
50
- # Order is only guaranteed if an ActiveSupport::OrderedHash is passed.
49
+ # @param [Hash] hsh - Anything in this hash will be added to the Object.
51
50
  # @param [boolean] include_context (default: false). Pass true if the'
52
51
  # context should be included.
53
52
  def initialize(hsh={})
@@ -103,7 +103,12 @@ module IIIF
103
103
  def get_info(svc_id)
104
104
  conn = Faraday.new("#{svc_id}/info.json") do |c|
105
105
  c.use Faraday::Response::RaiseError
106
- c.use Faraday::Adapter::NetHttp
106
+
107
+ if c.respond_to? :adapter
108
+ c.adapter Faraday.default_adapter
109
+ else
110
+ c.use Faraday::Adapter::NetHttp
111
+ end
107
112
  end
108
113
  resp = conn.get # raises exceptions that indicate HTTP problems
109
114
  JSON.parse(resp.body)
data/lib/iiif/service.rb CHANGED
@@ -33,9 +33,9 @@ module IIIF
33
33
  # Parse from a file path, string, or existing hash
34
34
  def parse(s)
35
35
  ordered_hash = nil
36
- if s.kind_of?(String) && File.exists?(s)
36
+ if s.kind_of?(String) && File.exist?(s)
37
37
  ordered_hash = IIIF::OrderedHash[JSON.parse(IO.read(s))]
38
- elsif s.kind_of?(String) && !File.exists?(s)
38
+ elsif s.kind_of?(String) && !File.exist?(s)
39
39
  ordered_hash = IIIF::OrderedHash[JSON.parse(s)]
40
40
  elsif s.kind_of?(Hash)
41
41
  ordered_hash = IIIF::OrderedHash[s]
@@ -206,17 +206,13 @@ module IIIF
206
206
 
207
207
  hsh.keys.each do |key|
208
208
  new_key = key.underscore == key ? key : key.underscore
209
- if new_key == 'service'
210
- new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key], IIIF::Service)
211
- elsif new_key == 'resource'
212
- new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key], IIIF::Presentation::Resource)
213
- elsif hsh[key].kind_of?(Hash)
214
- new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key])
215
- elsif hsh[key].kind_of?(Array)
209
+ if hsh[key].kind_of?(Array)
216
210
  new_object[new_key] = []
217
211
  hsh[key].each do |member|
218
212
  if new_key == 'service'
219
213
  new_object[new_key] << IIIF::Service.from_ordered_hash(member, IIIF::Service)
214
+ elsif new_key == 'resource'
215
+ new_object[new_key] << IIIF::Service.from_ordered_hash(hsh[key], IIIF::Presentation::Resource)
220
216
  elsif member.kind_of?(Hash)
221
217
  new_object[new_key] << IIIF::Service.from_ordered_hash(member)
222
218
  else
@@ -224,6 +220,12 @@ module IIIF
224
220
  # Again, no nested arrays, right?
225
221
  end
226
222
  end
223
+ elsif new_key == 'service'
224
+ new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key], IIIF::Service)
225
+ elsif new_key == 'resource'
226
+ new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key], IIIF::Presentation::Resource)
227
+ elsif hsh[key].kind_of?(Hash)
228
+ new_object[new_key] = IIIF::Service.from_ordered_hash(hsh[key])
227
229
  else
228
230
  new_object[new_key] = hsh[key]
229
231
  end
@@ -1,159 +1 @@
1
- {
2
- "http_interactions": [
3
- {
4
- "request": {
5
- "method": "get",
6
- "uri": "http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2/info.json",
7
- "body": {
8
- "encoding": "US-ASCII",
9
- "string": ""
10
- },
11
- "headers": {
12
- "User-Agent": [
13
- "Faraday v0.9.0"
14
- ],
15
- "Accept-Encoding": [
16
- "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
17
- ],
18
- "Accept": [
19
- "*/*"
20
- ]
21
- }
22
- },
23
- "response": {
24
- "status": {
25
- "code": 200,
26
- "message": "OK"
27
- },
28
- "headers": {
29
- "Server": [
30
- "Apache/2.2.22 (Ubuntu)"
31
- ],
32
- "Link": [
33
- "<http://iiif.io/api/image/2/level2.json>;rel=\"profile\",<http://iiif.io/api/image/2/context.json>;rel=\"http://www.w3.org/ns/json-ld#context\";type=\"application/ld+json\""
34
- ],
35
- "Access-Control-Allow-Origin": [
36
- "*"
37
- ],
38
- "Last-Modified": [
39
- "Wed, 26 Nov 2014 21:16:14 GMT"
40
- ],
41
- "Cache-Control": [
42
- "max-age=5184000"
43
- ],
44
- "Expires": [
45
- "Sun, 25 Jan 2015 21:16:14 GMT"
46
- ],
47
- "Content-Type": [
48
- "application/json"
49
- ],
50
- "Content-Length": [
51
- "737"
52
- ],
53
- "Accept-Ranges": [
54
- "bytes"
55
- ],
56
- "Date": [
57
- "Thu, 27 Nov 2014 00:55:14 GMT"
58
- ],
59
- "X-Varnish": [
60
- "1471998866 1471996229"
61
- ],
62
- "Age": [
63
- "13140"
64
- ],
65
- "Via": [
66
- "1.1 varnish"
67
- ],
68
- "Connection": [
69
- "keep-alive"
70
- ]
71
- },
72
- "body": {
73
- "encoding": "UTF-8",
74
- "string": "{\"profile\": [\"http://iiif.io/api/image/2/level2.json\", {\"supports\": [\"canonicalLinkHeader\", \"profileLinkHeader\", \"mirroring\", \"rotationArbitrary\", \"sizeAboveFull\"], \"qualities\": [\"default\", \"bitonal\", \"gray\", \"color\"], \"formats\": [\"jpg\", \"png\", \"gif\", \"webp\"]}], \"tiles\": [{\"width\": 1024, \"scaleFactors\": [1, 2, 4, 8, 16, 32]}], \"protocol\": \"http://iiif.io/api/image\", \"sizes\": [{\"width\": 96, \"height\": 225}, {\"width\": 191, \"height\": 450}, {\"width\": 381, \"height\": 900}, {\"width\": 762, \"height\": 1800}, {\"width\": 1524, \"height\": 3600}, {\"width\": 3047, \"height\": 7200}], \"height\": 7200, \"width\": 3047, \"@context\": \"http://iiif.io/api/image/2/context.json\", \"@id\": \"http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2\"}"
75
- },
76
- "http_version": null
77
- },
78
- "recorded_at": "Thu, 27 Nov 2014 01:00:58 GMT"
79
- },
80
- {
81
- "request": {
82
- "method": "get",
83
- "uri": "http://libimages.princeton.edu/loris2/xxxx%2F4612422%2F00000001.jp2/info.json",
84
- "body": {
85
- "encoding": "US-ASCII",
86
- "string": ""
87
- },
88
- "headers": {
89
- "User-Agent": [
90
- "Faraday v0.9.0"
91
- ],
92
- "Accept-Encoding": [
93
- "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
94
- ],
95
- "Accept": [
96
- "*/*"
97
- ]
98
- }
99
- },
100
- "response": {
101
- "status": {
102
- "code": 404,
103
- "message": "NOT FOUND"
104
- },
105
- "headers": {
106
- "Server": [
107
- "Apache/2.2.22 (Ubuntu)"
108
- ],
109
- "Link": [
110
- "<http://iiif.io/api/image/2/level2.json>;rel=\"profile\""
111
- ],
112
- "Access-Control-Allow-Origin": [
113
- "*"
114
- ],
115
- "Cache-Control": [
116
- "max-age=5184000"
117
- ],
118
- "Expires": [
119
- "Mon, 26 Jan 2015 10:20:46 GMT"
120
- ],
121
- "Vary": [
122
- "Accept-Encoding"
123
- ],
124
- "Content-Type": [
125
- "text/plain"
126
- ],
127
- "Content-Length": [
128
- "88"
129
- ],
130
- "Accept-Ranges": [
131
- "bytes"
132
- ],
133
- "Date": [
134
- "Thu, 27 Nov 2014 10:20:46 GMT"
135
- ],
136
- "X-Varnish": [
137
- "1472002765"
138
- ],
139
- "Age": [
140
- "0"
141
- ],
142
- "Via": [
143
- "1.1 varnish"
144
- ],
145
- "Connection": [
146
- "keep-alive"
147
- ]
148
- },
149
- "body": {
150
- "encoding": "UTF-8",
151
- "string": "Not Found: could not resolve identifier: xxxx%2F4612422%2F00000001.jp2 (404)"
152
- },
153
- "http_version": null
154
- },
155
- "recorded_at": "Thu, 27 Nov 2014 10:26:31 GMT"
156
- }
157
- ],
158
- "recorded_with": "VCR 2.9.3"
159
- }
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2/info.json","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v1.0.1"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"date":["Wed, 17 Jun 2020 19:38:19 GMT"],"server":["Apache/2.4.18 (Ubuntu)"],"link":["<http://iiif.io/api/image/2/level2.json>;rel=\"profile\",<http://iiif.io/api/image/2/context.json>;rel=\"http://www.w3.org/ns/json-ld#context\";type=\"application/ld+json\""],"access-control-allow-origin":["*"],"access-control-allow-methods":["GET"],"access-control-allow-headers":["X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"],"last-modified":["Sat, 25 Jan 2020 18:37:32 GMT"],"content-length":["753"],"content-type":["application/json"]},"body":{"encoding":"UTF-8","string":"{\"profile\": [\"http://iiif.io/api/image/2/level2.json\", {\"supports\": [\"canonicalLinkHeader\", \"profileLinkHeader\", \"mirroring\", \"rotationArbitrary\", \"regionSquare\", \"sizeAboveFull\"], \"qualities\": [\"default\", \"bitonal\", \"gray\", \"color\"], \"formats\": [\"jpg\", \"png\", \"gif\", \"webp\"]}], \"tiles\": [{\"width\": 1024, \"scaleFactors\": [1, 2, 4, 8, 16, 32]}], \"protocol\": \"http://iiif.io/api/image\", \"sizes\": [{\"width\": 96, \"height\": 225}, {\"width\": 191, \"height\": 450}, {\"width\": 381, \"height\": 900}, {\"width\": 762, \"height\": 1800}, {\"width\": 1524, \"height\": 3600}, {\"width\": 3047, \"height\": 7200}], \"height\": 7200, \"width\": 3047, \"@context\": \"http://iiif.io/api/image/2/context.json\", \"@id\": \"https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2\"}"},"http_version":null},"recorded_at":"Wed, 17 Jun 2020 19:38:19 GMT"},{"request":{"method":"get","uri":"https://libimages.princeton.edu/loris/xxxx%2F4612422%2F00000001.jp2/info.json","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v1.0.1"]}},"response":{"status":{"code":404,"message":"NOT FOUND"},"headers":{"date":["Wed, 17 Jun 2020 19:38:20 GMT"],"server":["Apache/2.4.18 (Ubuntu)"],"link":["<http://iiif.io/api/image/2/level2.json>;rel=\"profile\""],"access-control-allow-origin":["*"],"access-control-allow-methods":["GET"],"access-control-allow-headers":["X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"],"content-length":["86"],"content-type":["text/plain"]},"body":{"encoding":"UTF-8","string":"Not Found: Source image not found for identifier: xxxx%2F4612422%2F00000001.jp2. (404)"},"http_version":null},"recorded_at":"Wed, 17 Jun 2020 19:38:20 GMT"}],"recorded_with":"VCR 5.1.0"}
@@ -7,7 +7,8 @@ describe IIIF::Presentation::ImageResource do
7
7
 
8
8
  describe 'self#create_image_api_image_resource', vcr: vcr_options do
9
9
 
10
- let(:image_server) { 'http://libimages.princeton.edu/loris2' }
10
+ # 301 moved to https.../loris
11
+ let(:image_server) { 'https://libimages.princeton.edu/loris' }
11
12
 
12
13
  let(:valid_service_id) {
13
14
  id = 'pudl0001%2F4612422%2F00000001.jp2'
@@ -31,31 +32,31 @@ describe IIIF::Presentation::ImageResource do
31
32
  resource = described_class.create_image_api_image_resource(opts)
32
33
  # expect(resource['@context']).to eq 'http://iiif.io/api/presentation/2/context.json'
33
34
  # @context is only added when we call to_json...
34
- expect(resource['@id']).to eq 'http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2/full/!200,200/0/default.jpg'
35
+ expect(resource['@id']).to eq 'https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2/full/!200,200/0/default.jpg'
35
36
  expect(resource['@type']).to eq 'dctypes:Image'
36
37
  expect(resource.format).to eq "image/jpeg"
37
38
  expect(resource.width).to eq 3047
38
39
  expect(resource.height).to eq 7200
39
40
  expect(resource.service['@context']).to eq 'http://iiif.io/api/image/2/context.json'
40
- expect(resource.service['@id']).to eq 'http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2'
41
+ expect(resource.service['@id']).to eq 'https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2'
41
42
  expect(resource.service['profile']).to eq 'http://iiif.io/api/image/2/level2.json'
42
43
  end
43
- it 'copies over all teh infos (when copy_info is true)' do
44
+ it 'copies over all the info (when copy_info is true)' do
44
45
  opts = { service_id: valid_service_id, copy_info: true }
45
46
  resource = described_class.create_image_api_image_resource(opts)
46
- expect(resource['@id']).to eq 'http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2/full/!200,200/0/default.jpg'
47
+ expect(resource['@id']).to eq 'https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2/full/!200,200/0/default.jpg'
47
48
  expect(resource['@type']).to eq 'dctypes:Image'
48
49
  expect(resource.format).to eq "image/jpeg"
49
50
  expect(resource.width).to eq 3047
50
51
  expect(resource.height).to eq 7200
51
52
  expect(resource.service['@context']).to eq 'http://iiif.io/api/image/2/context.json'
52
- expect(resource.service['@id']).to eq 'http://libimages.princeton.edu/loris2/pudl0001%2F4612422%2F00000001.jp2'
53
+ expect(resource.service['@id']).to eq 'https://libimages.princeton.edu/loris/pudl0001%2F4612422%2F00000001.jp2'
53
54
  expect(resource.service['profile']).to eq [
54
55
  'http://iiif.io/api/image/2/level2.json',
55
56
  {
56
57
  'supports' => [
57
58
  'canonicalLinkHeader', 'profileLinkHeader', 'mirroring',
58
- 'rotationArbitrary', 'sizeAboveFull'
59
+ 'rotationArbitrary', 'regionSquare', 'sizeAboveFull'
59
60
  ],
60
61
  'qualities' => ['default', 'bitonal', 'gray', 'color'],
61
62
  'formats'=>['jpg', 'png', 'gif', 'webp']
@@ -78,7 +79,8 @@ describe IIIF::Presentation::ImageResource do
78
79
 
79
80
  describe 'respects the params we supply' do
80
81
  it ':resource_id' do
81
- r_id = 'http://example.edu/images/some.jpg'
82
+ r_id = 'http://example.edu/images/some.jpg'
83
+
82
84
  opts = { service_id: valid_service_id, resource_id: r_id}
83
85
  resource = described_class.create_image_api_image_resource(opts)
84
86
  expect(resource['@id']).to eq r_id
@@ -106,6 +106,13 @@ describe IIIF::Service do
106
106
  expect(parsed['service'].class).to be expected_klass
107
107
  end
108
108
 
109
+ it 'works with arrays of services' do
110
+ expected_klass = IIIF::Service
111
+ fixture['service'] = [fixture['service']]
112
+ parsed = described_class.from_ordered_hash(fixture)
113
+ expect(parsed['service'].first.class).to be expected_klass
114
+ end
115
+
109
116
  it 'round-trips' do
110
117
  fp = '/tmp/osullivan-spec.json'
111
118
  parsed = described_class.from_ordered_hash(fixture)
data/spec/spec_helper.rb CHANGED
@@ -8,7 +8,7 @@ require 'vcr'
8
8
 
9
9
  VCR.configure do |c|
10
10
  c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
11
- c.hook_into :webmock
11
+ c.hook_into :faraday
12
12
  c.configure_rspec_metadata!
13
13
  end
14
14
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iiif-presentation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Stroop
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.9.3
103
+ version: '5'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.9.3
110
+ version: '5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: json
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -157,16 +157,14 @@ executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
+ - ".github/workflows/ruby.yml"
160
161
  - ".gitignore"
161
162
  - ".rspec"
162
- - ".travis.yml"
163
163
  - Gemfile
164
164
  - LICENSE
165
165
  - README.md
166
166
  - Rakefile
167
167
  - VERSION
168
- - gemfiles/rails3.gemfile
169
- - gemfiles/rails4.gemfile
170
168
  - iiif-presentation.gemspec
171
169
  - lib/iiif/hash_behaviours.rb
172
170
  - lib/iiif/ordered_hash.rb
@@ -213,7 +211,7 @@ homepage: https://github.com/iiif/osullivan
213
211
  licenses:
214
212
  - Simplified BSD
215
213
  metadata: {}
216
- post_install_message:
214
+ post_install_message:
217
215
  rdoc_options: []
218
216
  require_paths:
219
217
  - lib
@@ -228,9 +226,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
226
  - !ruby/object:Gem::Version
229
227
  version: '0'
230
228
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.5.2
233
- signing_key:
229
+ rubygems_version: 3.3.26
230
+ signing_key:
234
231
  specification_version: 4
235
232
  summary: API for working with IIIF Presentation manifests.
236
233
  test_files:
data/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.0
4
- - 2.3.0
5
- install:
6
- - "gem install bundler"
7
- - "bundle install --jobs=3 --retry=3"
8
-
9
- gemfile:
10
- - gemfiles/rails3.gemfile
11
- - gemfiles/rails4.gemfile
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../"
4
-
5
- gem 'activesupport', '~> 3.2', '>= 3.2.18'
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../"
4
-
5
- gem 'activesupport', '~> 4.1'