atlas_rb 1.8.0 → 1.8.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/atlas_rb/blob.rb +43 -0
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3d2bc949790f66ee7081de2e94d427f69869fcb301c45d4b9399c072f466820
4
- data.tar.gz: 466abe63f27507e1845bc1126b739d2bfa396f7c79c447b1bf57e5be42352f4c
3
+ metadata.gz: de8129aceabcd06af713b7bddf2e4be8ff259bc3f8095af41d9e63cc2f03c17b
4
+ data.tar.gz: 9a45c13597c30c4b0c09c9dfb0bf199edb7d919d050f10faaadc32cc2024af3b
5
5
  SHA512:
6
- metadata.gz: 87494a7060c9b9f192edb404ecffd98ea5b8f4859f4b507e25e7a8d66717d34af7c240f3d99df13163f5e822163d5d3f146df4e9898937a5cb0687b80d12cae1
7
- data.tar.gz: 04b3221d9ae88ff6bd1b4586321dbd4eda20a4f6753cedfbf465ad4ad2d27214f5252a6e7dd4259e10a24b813eda4a966a7a39fd243244ad295b9c9a749cd5a6
6
+ metadata.gz: ee4d49599431a9052c3f3bc55d2d336bb967fedc61edb2815dda42cee74d2250b6700a51ea88c5b74a959fe2f562923e4486831bba66ceb7d5b0236fa74b054c
7
+ data.tar.gz: 75e2208c86cc1d3e6e13a1bcde956d2d821a7e6e5a141004b2bc2743b550778bd621bcc70aed2528122fabcb931f60a2bc356ed99226a9ece39b125b4d3a3f09
data/.version CHANGED
@@ -1 +1 @@
1
- 1.8.0
1
+ 1.8.1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- atlas_rb (1.8.0)
4
+ atlas_rb (1.8.1)
5
5
  faraday (~> 2.7)
6
6
  faraday-follow_redirects (~> 0.3.0)
7
7
  faraday-multipart (~> 1)
data/lib/atlas_rb/blob.rb CHANGED
@@ -39,6 +39,49 @@ module AtlasRb
39
39
  ))['blob']
40
40
  end
41
41
 
42
+ # Resolve a content Blob to its parent FileSet and containing Work noids.
43
+ #
44
+ # Wraps `GET /files/<id>/ancestry`. The download path is keyed only by the
45
+ # blob id, so a consumer recording a download/stream impression against the
46
+ # containing Work resolves it here — instead of threading the work noid
47
+ # through the download URL. Reads on the Blob floor (no admin gate). An
48
+ # unknown id yields a `404` (raw Faraday response); either value is `nil`
49
+ # when unresolvable (e.g. an orphan blob with no FileSet parent).
50
+ #
51
+ # @param id [String] the Blob ID.
52
+ # @param nuid [String, nil] optional acting user's NUID. On the relay-signing
53
+ # path it is signed into the assertion `sub`; on the BYO-JWT (`ATLAS_JWT`)
54
+ # path it is ignored (identity lives in the token).
55
+ # @param on_behalf_of [String, nil] optional NUID for the `On-Behalf-Of`
56
+ # header. Falls through to {AtlasRb.config}.default_on_behalf_of when
57
+ # omitted.
58
+ # @return [AtlasRb::Mash] `{ "file_set" => "<noid>", "work" => "<noid>" }`
59
+ # (either value `nil` when unresolvable).
60
+ #
61
+ # @example
62
+ # AtlasRb::Blob.ancestry("b-321")
63
+ # # => { "file_set" => "fs-654", "work" => "w-789" }
64
+ def self.ancestry(id, nuid: nil, on_behalf_of: nil)
65
+ AtlasRb::Mash.new(JSON.parse(
66
+ connection({}, nuid, on_behalf_of: on_behalf_of).get("#{ROUTE}#{id}/ancestry")&.body
67
+ ))
68
+ end
69
+
70
+ # Convenience over {.ancestry}: the containing Work's noid for a content
71
+ # Blob (or `nil` when unresolvable). The shape Cerberus's impression-capture
72
+ # job wants — roll a download up to its Work from the blob id alone.
73
+ #
74
+ # @param id [String] the Blob ID.
75
+ # @param nuid [String, nil] optional acting user's NUID (see {.ancestry}).
76
+ # @param on_behalf_of [String, nil] optional `On-Behalf-Of` NUID (see {.ancestry}).
77
+ # @return [String, nil] the containing Work's noid, or `nil` when unresolvable.
78
+ #
79
+ # @example
80
+ # AtlasRb::Blob.work("b-321") # => "w-789"
81
+ def self.work(id, nuid: nil, on_behalf_of: nil)
82
+ ancestry(id, nuid: nuid, on_behalf_of: on_behalf_of)['work']
83
+ end
84
+
42
85
  # Stream the Blob's binary content through a caller-supplied block.
43
86
  #
44
87
  # The body is **not** buffered — each chunk Faraday receives is yielded
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlas_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cliff
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-06-24 00:00:00.000000000 Z
11
+ date: 2026-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday