contentdm_api 0.3.10 → 0.5.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 +5 -5
- data/.github/workflows/ci.yml +36 -0
- data/README.md +1 -1
- data/contentdm_api.gemspec +4 -3
- data/lib/contentdm_api/item.rb +25 -16
- data/lib/contentdm_api/request.rb +4 -21
- data/lib/contentdm_api/version.rb +1 -1
- metadata +28 -27
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8667262333abc85a067f57a5187f06078acc1042b67f79eb67905574536dc428
|
4
|
+
data.tar.gz: abe33c8fe01963274831cd32bb36338bed4dc2e86488a79956b699eb243dcbac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35bcb8e393b06220bcd7d189b255648ecd9dcad06eb433853420cb2a0360c9c5170671d8a90cc0eb2f586f93222c626906d9694dc83a4b98a359b4075300cfc9
|
7
|
+
data.tar.gz: 220978c118d1ab0180145a969a67737b721d174411dc7ddf96eb0d23633a2e6850461c5612f8adec820a08f54c53f70dbab6c9f67ab997a467575eadcacc0522
|
@@ -0,0 +1,36 @@
|
|
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: CI
|
9
|
+
|
10
|
+
on: [push]
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test:
|
14
|
+
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
strategy:
|
17
|
+
matrix:
|
18
|
+
ruby-version: ['2.6']
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
- name: Pin bundler
|
30
|
+
run: gem install bundler:2.0.2
|
31
|
+
- name: Lock bundler
|
32
|
+
run: bundle _2.0.2_ lock
|
33
|
+
- name: Run bundler
|
34
|
+
run: bundle install
|
35
|
+
- name: Run tests
|
36
|
+
run: bundle exec rake test
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# CONTENTdm API for Ruby
|
2
2
|
|
3
|
-
|
3
|
+

|
4
4
|
|
5
5
|
Ruby bindings for the [CONTENTdm API](https://www.oclc.org/support/services/contentdm_api/help/customizing-website-help/other-customizations/contentdm_api-api-reference.en.html).
|
6
6
|
|
data/contentdm_api.gemspec
CHANGED
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.
|
20
|
+
spec.add_dependency "http", "~> 4.0.3"
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.0.1"
|
21
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
23
|
spec.add_development_dependency "minitest", "~> 5.0"
|
23
|
-
spec.add_development_dependency 'webmock', '~> 1.24', '>= 1.24.0'
|
24
|
-
spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.1'
|
25
24
|
spec.add_development_dependency "yard", "~> 0.9.0"
|
25
|
+
spec.add_development_dependency "vcr", "~> 6.0"
|
26
|
+
spec.add_development_dependency "webmock", "~> 3.0"
|
26
27
|
end
|
data/lib/contentdm_api/item.rb
CHANGED
@@ -15,7 +15,10 @@ module CONTENTdmAPI
|
|
15
15
|
# @param [String] collection The CONTENTdm API calls this an "alias"
|
16
16
|
# @param [Integer] id The CONTENTdm API calls this a "pointer". It is the
|
17
17
|
# identifier for a a given CONTENTdm item.
|
18
|
-
# @param [Boolean] with_compound
|
18
|
+
# @param [Boolean] with_compound Recursively request and in clude full
|
19
|
+
# compound item data? If false, basic compound data will STILL be
|
20
|
+
# included in the array value of the item hash key 'page'. 'page' is the
|
21
|
+
# term CONTENTdm uses to signify a list of child pages for an item.
|
19
22
|
# @param [Boolean] enrich_compount Fetch and merge full item info for each
|
20
23
|
# compound?
|
21
24
|
# @param [Object] requester A class to make requests of the API.
|
@@ -42,16 +45,33 @@ module CONTENTdmAPI
|
|
42
45
|
# dmGetCompoundObjectInfo functions
|
43
46
|
def metadata
|
44
47
|
if with_compound
|
45
|
-
result_with_id.merge('page' =>
|
48
|
+
result_with_id.merge('page' => compounds_to_h)
|
46
49
|
else
|
47
|
-
result_with_id.merge('page' =>
|
50
|
+
result_with_id.merge('page' => page)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def compounds_to_h
|
55
|
+
page.map do |compound|
|
56
|
+
block_given? ? yield(compound(compound)) : compound(compound)
|
48
57
|
end
|
49
58
|
end
|
50
59
|
|
51
60
|
private
|
52
61
|
|
62
|
+
def compound(compound)
|
63
|
+
# API gives inconsistent results
|
64
|
+
return {} unless compound.is_a?(Hash)
|
65
|
+
compound.merge(self.class.new(base_url: base_url,
|
66
|
+
collection: collection,
|
67
|
+
id: compound['pageptr'],
|
68
|
+
with_compound: false).metadata)
|
69
|
+
end
|
70
|
+
|
53
71
|
def page
|
54
|
-
result.
|
72
|
+
# Single result pages come back as a hash. Cast them into and array to
|
73
|
+
# make our api more consistent
|
74
|
+
[result.fetch('page', [])].flatten
|
55
75
|
end
|
56
76
|
|
57
77
|
def result_with_id
|
@@ -62,17 +82,6 @@ module CONTENTdmAPI
|
|
62
82
|
values.first.merge('page' => values.last.fetch('page', []))
|
63
83
|
end
|
64
84
|
|
65
|
-
def compounds(page)
|
66
|
-
page.map do |compound|
|
67
|
-
# API gives inconsistent results
|
68
|
-
return {} unless compound.is_a?(Hash)
|
69
|
-
compound.merge(self.class.new(base_url: base_url,
|
70
|
-
collection: collection,
|
71
|
-
id: compound['pageptr'],
|
72
|
-
with_compound: false).metadata)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
85
|
def remove_errors(value)
|
77
86
|
value['code'] != '-2' ? value : {}
|
78
87
|
end
|
@@ -90,7 +99,7 @@ module CONTENTdmAPI
|
|
90
99
|
end
|
91
100
|
|
92
101
|
def service_configs
|
93
|
-
|
102
|
+
item_config.concat(compound_config)
|
94
103
|
end
|
95
104
|
|
96
105
|
def item_config
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require 'http'
|
2
|
+
|
2
3
|
module CONTENTdmAPI
|
3
4
|
# Form requests to the ContentDM API
|
4
5
|
class Request
|
@@ -10,7 +11,7 @@ module CONTENTdmAPI
|
|
10
11
|
# params and format to request of the CONTENTdm API
|
11
12
|
#
|
12
13
|
# @return [Void]
|
13
|
-
def initialize(base_url: '', client:
|
14
|
+
def initialize(base_url: '', client: HTTP, service: Service.new)
|
14
15
|
@base_url = base_url
|
15
16
|
@client = client
|
16
17
|
@service = service
|
@@ -20,25 +21,7 @@ module CONTENTdmAPI
|
|
20
21
|
#
|
21
22
|
# @return [String] either XML or JSON
|
22
23
|
def fetch
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def uri
|
27
|
-
@uri = URI.parse(unencoded_url)
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def http
|
33
|
-
http = client.new(uri.host, uri.port)
|
34
|
-
http.read_timeout = 1200
|
35
|
-
http.open_timeout = 120
|
36
|
-
http.use_ssl = (uri.scheme == "https")
|
37
|
-
http
|
38
|
-
end
|
39
|
-
|
40
|
-
def request
|
41
|
-
http.request(client::Get.new(uri.request_uri))
|
24
|
+
client.get(unencoded_url).to_s
|
42
25
|
end
|
43
26
|
|
44
27
|
# A URL for a given service
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contentdm_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fennell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: http
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.3
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
33
|
+
version: 2.0.1
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: 2.0.1
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,59 +67,47 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '5.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: yard
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 1.24.0
|
75
|
+
version: 0.9.0
|
65
76
|
type: :development
|
66
77
|
prerelease: false
|
67
78
|
version_requirements: !ruby/object:Gem::Requirement
|
68
79
|
requirements:
|
69
80
|
- - "~>"
|
70
81
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 1.24.0
|
82
|
+
version: 0.9.0
|
75
83
|
- !ruby/object:Gem::Dependency
|
76
84
|
name: vcr
|
77
85
|
requirement: !ruby/object:Gem::Requirement
|
78
86
|
requirements:
|
79
87
|
- - "~>"
|
80
88
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: 3.0.1
|
89
|
+
version: '6.0'
|
85
90
|
type: :development
|
86
91
|
prerelease: false
|
87
92
|
version_requirements: !ruby/object:Gem::Requirement
|
88
93
|
requirements:
|
89
94
|
- - "~>"
|
90
95
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 3.0.1
|
96
|
+
version: '6.0'
|
95
97
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
98
|
+
name: webmock
|
97
99
|
requirement: !ruby/object:Gem::Requirement
|
98
100
|
requirements:
|
99
101
|
- - "~>"
|
100
102
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
103
|
+
version: '3.0'
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
107
|
requirements:
|
106
108
|
- - "~>"
|
107
109
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
110
|
+
version: '3.0'
|
109
111
|
description:
|
110
112
|
email:
|
111
113
|
- fenne035@umn.edu
|
@@ -113,8 +115,8 @@ executables: []
|
|
113
115
|
extensions: []
|
114
116
|
extra_rdoc_files: []
|
115
117
|
files:
|
118
|
+
- ".github/workflows/ci.yml"
|
116
119
|
- ".gitignore"
|
117
|
-
- ".travis.yml"
|
118
120
|
- CHANGELOG.txt
|
119
121
|
- CODE_OF_CONDUCT.md
|
120
122
|
- Gemfile
|
@@ -150,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
152
|
- !ruby/object:Gem::Version
|
151
153
|
version: '0'
|
152
154
|
requirements: []
|
153
|
-
|
154
|
-
rubygems_version: 2.5.1
|
155
|
+
rubygems_version: 3.0.3
|
155
156
|
signing_key:
|
156
157
|
specification_version: 4
|
157
158
|
summary: Ruby bindings for the CONTENTdm API
|