atlas_rb 1.8.7 → 1.8.8

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
2
  SHA256:
3
- metadata.gz: 88e591bc06be2edcf972e7df8490f57656f0562680d3546598f7461b1ad25bc3
4
- data.tar.gz: 997084c70c482d78cbc4627d7dcf65b91a1687b8bf6ed1855c0f46613b007389
3
+ metadata.gz: 790f093dac74f6f06ec40f1be385888d0acb3123901f2056b39996ab8050e1ef
4
+ data.tar.gz: 5137778cc466b711c9862ab661d849b795142429b3507cc3e4a2549c8ccf7813
5
5
  SHA512:
6
- metadata.gz: 87d74362da0a1b9fe6655c675fe834dce9c1ea824012d9f482c1828fbe6f299495793836c6840528d350aad020a1a28bf3a53f52136c336c114a3e41afb61096
7
- data.tar.gz: b02aac392fa82e3f64c5a391e23215aa2eb6577285ddb0517ac2653ae67f33603dc05e4af018acb73c5a2d9859fc2b137309f51525db6b40aa36897cbe957cfa
6
+ metadata.gz: f3244e997c783521e0a86b49cdfe2cd471ad744cca7399d4497d2a250102bb3c51f3f92c6d54b17d6137171baa355fe9f4ff42464565641efbb7fc7e83e489c3
7
+ data.tar.gz: 676ec01145ceb6773fa6ed13eda23a40949ef1ccaf7e984576fd00988169bdd19ae1710dc7f06f72b48f48165224aa57b585e1d9bdcd74c64038f58cb96f4b05
data/.version CHANGED
@@ -1 +1 @@
1
- 1.8.7
1
+ 1.8.8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.8.8
4
+
5
+ ### Added — type-agnostic current MODS (`Resource.mods`)
6
+
7
+ New polymorphic wrapper `AtlasRb::Resource.mods(id, kind = nil, …)` for Atlas's
8
+ `GET /resources/:id/mods` — fetch the current descriptive MODS of any Modsable
9
+ resource (Work / Collection / Community) by NOID, without knowing its type.
10
+ Returns the raw response body, mirroring the typed `Work.mods` / `Collection.mods`
11
+ / `Community.mods`; output is byte-identical to the typed routes. `kind` omitted
12
+ yields the JSON projection (server default); pass `"xml"` for MODS XML.
13
+
14
+ Collapses the `children → find_many (for klass) → dispatch-by-klass` two-step a
15
+ bulk MODS exporter needed just to pick the typed MODS URL down to one call per
16
+ member. `404` (unknown id / non-Modsable / no MODS) comes back as an empty body.
17
+
3
18
  ## 1.8.7
4
19
 
5
20
  ### Added — personal-access token lifecycle (`System::Token.mint` / `.revoke`)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- atlas_rb (1.8.7)
4
+ atlas_rb (1.8.8)
5
5
  faraday (~> 2.7)
6
6
  faraday-follow_redirects (~> 0.3.0)
7
7
  faraday-multipart (~> 1)
@@ -170,6 +170,38 @@ module AtlasRb
170
170
  ))
171
171
  end
172
172
 
173
+ # Fetch the CURRENT MODS of any Modsable resource by NOID — the polymorphic
174
+ # sibling of {Work.mods} / {Collection.mods} / {Community.mods}. Wraps
175
+ # `GET /resources/<id>/mods[.kind]` and returns the **raw response body**
176
+ # (not parsed), mirroring the typed wrappers. Lets a caller holding only a
177
+ # NOID (no type) fetch descriptive MODS in one call, instead of resolving
178
+ # the klass first to pick the typed route — e.g. a bulk Collection/Set MODS
179
+ # export that has bare member NOIDs from {Collection.children}.
180
+ #
181
+ # @param id [String] an Atlas resource ID (NOID).
182
+ # @param kind [String, nil] response-format extension: omit for the JSON
183
+ # projection (the server default), or pass `"xml"` for MODS XML (`"json"`
184
+ # / `"html"` also accepted). Output is byte-identical to the typed route
185
+ # for the resolved type.
186
+ # @param nuid [String, nil] optional acting user's NUID. On the relay-signing
187
+ # path it is signed into the assertion `sub`; on the BYO-JWT (`ATLAS_JWT`)
188
+ # path it is ignored (identity lives in the token).
189
+ # @param on_behalf_of [String, nil] optional NUID for the `On-Behalf-Of`
190
+ # header. Falls through to {AtlasRb.config}.default_on_behalf_of when omitted.
191
+ # @return [String, nil] the raw MODS body (XML or JSON per `kind`). The
192
+ # server returns `404` (empty body) for an unknown id, a non-Modsable
193
+ # resource, or one with no MODS.
194
+ #
195
+ # @example Bulk-export a Set's members' MODS without klass dispatch
196
+ # AtlasRb::Collection.children(set_id).each do |noid|
197
+ # xml = AtlasRb::Resource.mods(noid, "xml")
198
+ # end
199
+ def self.mods(id, kind = nil, nuid: nil, on_behalf_of: nil)
200
+ connection({}, nuid, on_behalf_of: on_behalf_of).get(
201
+ '/resources/' + id + '/mods' + (kind.present? ? ".#{kind}" : '')
202
+ )&.body
203
+ end
204
+
173
205
  # List the retained MODS versions for a resource.
174
206
  #
175
207
  # Wraps Atlas's `GET /resources/<id>/mods/versions`, which returns the
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlas_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.7
4
+ version: 1.8.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cliff