folio_client 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 726191de10d2f5974ac8294f2c4f93a75146631dd2c86200d2de53f9c72cd76f
4
- data.tar.gz: 2ec95c6e87c4541fb1b2b7050c2bd84d5bd3a46f948b0b711b8f042f58ddf6e5
3
+ metadata.gz: f400cbad25cc1f7a7a4af985a510c597af5dea7b18cf636d5e6cb8196b4ef059
4
+ data.tar.gz: 26d9485bebd8780fafe498b15827575703316c229ed8c35e361aee3246ee70fd
5
5
  SHA512:
6
- metadata.gz: ce0de774a34bbc7eda7a97d26e9ac12d49297a804994425045fe7a8b85017401f54dd11fd43952e4f75e799e232979475f3881eb6f9a211e6f4e32df48168424
7
- data.tar.gz: eb31f66db330ab973060794cfcfb30471c02d21529c5242f62fc11a5d97542f1ce13587af5f8d6b2057d5b709951f9c49690725937e39f3d84236df144da3b73
6
+ metadata.gz: 472ca9f6c928aa3353b8f928cce63030329e62a7c26655700aaaef6c835e777f58d0771c8b58d8bfd50ee59a7c2c1724063246884ab529556b7cd92ee2065dfd
7
+ data.tar.gz: 2add95c0f3492db0c80f1770c40576d7bbac019a31674a9b0124a47706b065e1b02e67735519dddc2cf4f832216d453ddb3126906a4c89f4d4eac1f59c70fd6d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- folio_client (0.8.0)
4
+ folio_client (0.9.0)
5
5
  activesupport (>= 4.2, < 8)
6
6
  dry-monads
7
7
  faraday
@@ -11,7 +11,7 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (7.0.4.2)
14
+ activesupport (7.0.4.3)
15
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
16
  i18n (>= 1.6, < 2)
17
17
  minitest (>= 5.1)
@@ -67,21 +67,21 @@ GEM
67
67
  diff-lcs (>= 1.2.0, < 2.0)
68
68
  rspec-support (~> 3.12.0)
69
69
  rspec-support (3.12.0)
70
- rubocop (1.44.1)
70
+ rubocop (1.48.1)
71
71
  json (~> 2.3)
72
72
  parallel (~> 1.10)
73
73
  parser (>= 3.2.0.0)
74
74
  rainbow (>= 2.2.2, < 4.0)
75
75
  regexp_parser (>= 1.8, < 3.0)
76
76
  rexml (>= 3.2.5, < 4.0)
77
- rubocop-ast (>= 1.24.1, < 2.0)
77
+ rubocop-ast (>= 1.26.0, < 2.0)
78
78
  ruby-progressbar (~> 1.7)
79
79
  unicode-display_width (>= 2.4.0, < 3.0)
80
80
  rubocop-ast (1.27.0)
81
81
  parser (>= 3.2.1.0)
82
82
  rubocop-capybara (2.17.1)
83
83
  rubocop (~> 1.41)
84
- rubocop-performance (1.15.2)
84
+ rubocop-performance (1.16.0)
85
85
  rubocop (>= 1.7.0, < 2.0)
86
86
  rubocop-ast (>= 0.4.0)
87
87
  rubocop-rspec (2.19.0)
@@ -96,10 +96,10 @@ GEM
96
96
  simplecov_json_formatter (~> 0.1)
97
97
  simplecov-html (0.12.3)
98
98
  simplecov_json_formatter (0.1.4)
99
- standard (1.24.3)
99
+ standard (1.25.2)
100
100
  language_server-protocol (~> 3.17.0.2)
101
- rubocop (= 1.44.1)
102
- rubocop-performance (= 1.15.2)
101
+ rubocop (= 1.48.1)
102
+ rubocop-performance (= 1.16.0)
103
103
  tzinfo (2.0.6)
104
104
  concurrent-ruby (~> 1.0)
105
105
  unf (0.1.4)
data/README.md CHANGED
@@ -65,13 +65,13 @@ client.fetch_hrid(barcode: "12345")
65
65
  => "a7927874"
66
66
 
67
67
  # Request a MARC record given an instance hrid
68
- # returns a hash if found; raises FolioClient::UnexpectedResponse::ResourceNotFound if instance_hrid not found
68
+ # returns a hash if found; raises FolioClient::ResourceNotFound if instance_hrid not found
69
69
  client.fetch_marc_hash(instance_hrid: "a7927874")
70
70
  => {"fields"=>
71
71
  [{"003"=>"FOLIO"}....]
72
72
  }
73
73
 
74
- # Import a MARC record
74
+ # Import a MARC record into FOLIO
75
75
  data_importer = client.data_import(marc: my_marc, job_profile_id: '4ba4f4ab', job_profile_name: 'ETDs')
76
76
  # If called too quickly, might get Failure(:not_found)
77
77
  data_importer.status
@@ -6,12 +6,13 @@ class FolioClient
6
6
  attr_accessor :client, :instance_id
7
7
 
8
8
  # @param client [FolioClient] the configured client
9
- # @param instance_id [String] the UUID of the instance to which the holdings records belongs
9
+ # @param instance_id [String] the UUID of the instance to which the holdings record belongs
10
10
  def initialize(client, instance_id:)
11
11
  @client = client
12
12
  @instance_id = instance_id
13
13
  end
14
14
 
15
+ # create a holdings record for the instance
15
16
  # @param permanent_location_id [String] the UUID of the permanent location
16
17
  # @param holdings_type_id [String] the UUID of the holdings type
17
18
  def create(holdings_type_id:, permanent_location_id:)
@@ -10,8 +10,9 @@ class FolioClient
10
10
  @client = client
11
11
  end
12
12
 
13
- # @param barcode [String] barcode to search by to fetch the HRID
14
- # @return [String,nil] HRID if present, otherwise nil.
13
+ # get instance HRID from barcode
14
+ # @param barcode [String] barcode
15
+ # @return [String,nil] instance HRID if present, otherwise nil.
15
16
  def fetch_hrid(barcode:)
16
17
  # find the instance UUID for this barcode
17
18
  instance = client.get("/search/instances", {query: "items.barcode==#{barcode}"})
@@ -24,8 +25,9 @@ class FolioClient
24
25
  result.dig("hrid")
25
26
  end
26
27
 
27
- # @param hrid [String] HRID to search by to fetch the external ID
28
- # @return [String,nil] external ID if present, otherwise nil.
28
+ # get instance external ID from HRID
29
+ # @param hrid [String] instance HRID
30
+ # @return [String,nil] instance external ID if present, otherwise nil.
29
31
  # @raise [ResourceNotFound, MultipleResourcesFound] if search does not return exactly 1 result
30
32
  def fetch_external_id(hrid:)
31
33
  instance_response = client.get("/search/instances", {query: "hrid==#{hrid}"})
@@ -36,11 +38,11 @@ class FolioClient
36
38
  instance_response.dig("instances", 0, "id")
37
39
  end
38
40
 
39
- # Retrieve basic information about a record. Example usage: get the external ID and _version for update using
41
+ # Retrieve basic information about a instance record. Example usage: get the external ID and _version for update using
40
42
  # optimistic locking when the HRID is available: `fetch_instance_info(hrid: 'a1234').slice('id', '_version')`
41
43
  # (or vice versa if the external ID is available).
42
- # @param external_id [String] an external ID for looking up info about the record
43
- # @param hrid [String] an HRID for looking up info about the record
44
+ # @param external_id [String] an external ID for the desired instance record
45
+ # @param hrid [String] an instance HRID for the desired instance record
44
46
  # @return [Hash] information about the record.
45
47
  # @raise [ArgumentError] if the caller does not provide exactly one of external_id or hrid
46
48
  def fetch_instance_info(external_id: nil, hrid: nil)
@@ -51,9 +53,10 @@ class FolioClient
51
53
  client.get("/inventory/instances/#{external_id}")
52
54
  end
53
55
 
54
- # @param hrid [String] folio instance HRID
56
+ # @param hrid [String] instance HRID
55
57
  # @param status_id [String] uuid for an instance status code
56
- # @raise [ResourceNotFound] if search by hrid returns 0 results
58
+ # @return true if instance status matches the uuid param, false otherwise
59
+ # @raise [ResourceNotFound] if search by instance HRID returns 0 results
57
60
  def has_instance_status?(hrid:, status_id:)
58
61
  # get the instance record and its statusId
59
62
  instance = client.get("/inventory/instances", {query: "hrid==#{hrid}"})
@@ -87,7 +87,7 @@ class FolioClient
87
87
  def check_not_found(result, index)
88
88
  return unless result.failure? && result.failure == :not_found && index > 2
89
89
 
90
- raise ResourceNotFound, "Job not found"
90
+ raise ResourceNotFound, "Job #{job_execution_id} not found after #{index} retries"
91
91
  end
92
92
  end
93
93
  end
@@ -10,6 +10,7 @@ class FolioClient
10
10
  @client = client
11
11
  end
12
12
 
13
+ # get marc bib data from folio given an instance HRID
13
14
  # @param instance_hrid [String] the key to use for MARC lookup
14
15
  # @return [Hash] hash representation of the MARC. should be usable by MARC::Record.new_from_hash (from ruby-marc gem)
15
16
  # @raises NotFound, MultipleRecordsForIdentifier
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class FolioClient
4
- VERSION = "0.8.0"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: folio_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Mangiafico
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-17 00:00:00.000000000 Z
11
+ date: 2023-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -206,7 +206,7 @@ metadata:
206
206
  source_code_uri: https://github.com/sul-dlss/folio_client
207
207
  changelog_uri: https://github.com/sul-dlss/folio_client/releases
208
208
  rubygems_mfa_required: 'true'
209
- post_install_message:
209
+ post_install_message:
210
210
  rdoc_options: []
211
211
  require_paths:
212
212
  - lib
@@ -222,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  version: '0'
223
223
  requirements: []
224
224
  rubygems_version: 3.3.7
225
- signing_key:
225
+ signing_key:
226
226
  specification_version: 4
227
227
  summary: Interface for interacting with the Folio ILS API.
228
228
  test_files: []