folio_client 0.13.0 → 0.14.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 +4 -4
- data/Gemfile.lock +23 -13
- data/README.md +41 -0
- data/api_test.rb +2 -0
- data/lib/folio_client/users.rb +32 -0
- data/lib/folio_client/version.rb +1 -1
- data/lib/folio_client.rb +16 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 52b3024a210528d439f1d65a9e8a0b62b1b5359d0ae639612f46b7f2808759e2
|
|
4
|
+
data.tar.gz: 168ccfccfa8155171bd0ccba099ad91bd16533ea148b87867f6df3fd3aa617fb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 618c561b2f7f69baa03733e9a4f1cca3cf50e3d2bdc98924a9d759639634e98fc2f27f8868c8876eab034da6963976d58e54d396f39379f9e9223a762584490a
|
|
7
|
+
data.tar.gz: f0ddf15d1b38e14f3e8b506fbf6aa6249b05c77c35192c7a0315307e6ffe48c586ed66863f200279360217f8edc15f705c8d83b0d7c0c710a1ab9b047ec35f6f
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
folio_client (0.
|
|
4
|
+
folio_client (0.14.0)
|
|
5
5
|
activesupport (>= 4.2, < 8)
|
|
6
6
|
dry-monads
|
|
7
7
|
faraday
|
|
@@ -11,21 +11,30 @@ PATH
|
|
|
11
11
|
GEM
|
|
12
12
|
remote: https://rubygems.org/
|
|
13
13
|
specs:
|
|
14
|
-
activesupport (7.
|
|
14
|
+
activesupport (7.1.1)
|
|
15
|
+
base64
|
|
16
|
+
bigdecimal
|
|
15
17
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
18
|
+
connection_pool (>= 2.2.5)
|
|
19
|
+
drb
|
|
16
20
|
i18n (>= 1.6, < 2)
|
|
17
21
|
minitest (>= 5.1)
|
|
22
|
+
mutex_m
|
|
18
23
|
tzinfo (~> 2.0)
|
|
19
24
|
addressable (2.8.5)
|
|
20
25
|
public_suffix (>= 2.0.2, < 6.0)
|
|
21
26
|
ast (2.4.2)
|
|
22
27
|
base64 (0.1.1)
|
|
28
|
+
bigdecimal (3.1.4)
|
|
23
29
|
byebug (11.1.3)
|
|
24
30
|
concurrent-ruby (1.2.2)
|
|
31
|
+
connection_pool (2.4.1)
|
|
25
32
|
crack (0.4.5)
|
|
26
33
|
rexml
|
|
27
34
|
diff-lcs (1.5.0)
|
|
28
35
|
docile (1.4.0)
|
|
36
|
+
drb (2.1.1)
|
|
37
|
+
ruby2_keywords
|
|
29
38
|
dry-core (1.0.1)
|
|
30
39
|
concurrent-ruby (~> 1.0)
|
|
31
40
|
zeitwerk (~> 2.6)
|
|
@@ -49,15 +58,16 @@ GEM
|
|
|
49
58
|
scrub_rb (>= 1.0.1, < 2)
|
|
50
59
|
unf
|
|
51
60
|
minitest (5.20.0)
|
|
61
|
+
mutex_m (0.1.2)
|
|
52
62
|
parallel (1.23.0)
|
|
53
|
-
parser (3.2.2.
|
|
63
|
+
parser (3.2.2.4)
|
|
54
64
|
ast (~> 2.4.1)
|
|
55
65
|
racc
|
|
56
66
|
public_suffix (5.0.3)
|
|
57
|
-
racc (1.7.
|
|
67
|
+
racc (1.7.3)
|
|
58
68
|
rainbow (3.1.1)
|
|
59
|
-
rake (13.0
|
|
60
|
-
regexp_parser (2.8.
|
|
69
|
+
rake (13.1.0)
|
|
70
|
+
regexp_parser (2.8.2)
|
|
61
71
|
rexml (3.2.6)
|
|
62
72
|
rspec (3.12.0)
|
|
63
73
|
rspec-core (~> 3.12.0)
|
|
@@ -84,7 +94,7 @@ GEM
|
|
|
84
94
|
rubocop-ast (>= 1.28.1, < 2.0)
|
|
85
95
|
ruby-progressbar (~> 1.7)
|
|
86
96
|
unicode-display_width (>= 2.4.0, < 3.0)
|
|
87
|
-
rubocop-ast (1.
|
|
97
|
+
rubocop-ast (1.30.0)
|
|
88
98
|
parser (>= 3.2.1.0)
|
|
89
99
|
rubocop-capybara (2.19.0)
|
|
90
100
|
rubocop (~> 1.41)
|
|
@@ -93,8 +103,8 @@ GEM
|
|
|
93
103
|
rubocop-performance (1.19.1)
|
|
94
104
|
rubocop (>= 1.7.0, < 2.0)
|
|
95
105
|
rubocop-ast (>= 0.4.0)
|
|
96
|
-
rubocop-rspec (2.
|
|
97
|
-
rubocop (~> 1.
|
|
106
|
+
rubocop-rspec (2.25.0)
|
|
107
|
+
rubocop (~> 1.40)
|
|
98
108
|
rubocop-capybara (~> 2.17)
|
|
99
109
|
rubocop-factory_bot (~> 2.22)
|
|
100
110
|
ruby-progressbar (1.13.0)
|
|
@@ -106,18 +116,18 @@ GEM
|
|
|
106
116
|
simplecov_json_formatter (~> 0.1)
|
|
107
117
|
simplecov-html (0.12.3)
|
|
108
118
|
simplecov_json_formatter (0.1.4)
|
|
109
|
-
standard (1.31.
|
|
119
|
+
standard (1.31.2)
|
|
110
120
|
language_server-protocol (~> 3.17.0.2)
|
|
111
121
|
lint_roller (~> 1.0)
|
|
112
|
-
rubocop (~> 1.56.
|
|
122
|
+
rubocop (~> 1.56.4)
|
|
113
123
|
standard-custom (~> 1.0.0)
|
|
114
124
|
standard-performance (~> 1.2)
|
|
115
125
|
standard-custom (1.0.2)
|
|
116
126
|
lint_roller (~> 1.0)
|
|
117
127
|
rubocop (~> 1.50)
|
|
118
|
-
standard-performance (1.2.
|
|
128
|
+
standard-performance (1.2.1)
|
|
119
129
|
lint_roller (~> 1.1)
|
|
120
|
-
rubocop-performance (~> 1.19.
|
|
130
|
+
rubocop-performance (~> 1.19.1)
|
|
121
131
|
tzinfo (2.0.6)
|
|
122
132
|
concurrent-ruby (~> 1.0)
|
|
123
133
|
unf (0.1.4)
|
data/README.md
CHANGED
|
@@ -123,6 +123,47 @@ client.interface_details(id: 'c6f7470e-6229-45ce-b3f9-32006e9affcf')
|
|
|
123
123
|
"createdByUserId"=>"38524916-598d-4edf-a2ef-04bba7e78ad6",
|
|
124
124
|
"updatedDate"=>"2023-02-16T22:27:51.515+00:00",
|
|
125
125
|
"updatedByUserId"=>"38524916-598d-4edf-a2ef-04bba7e78ad6"}}
|
|
126
|
+
|
|
127
|
+
# Get list of users (filtered with an optional query)
|
|
128
|
+
# see https://s3.amazonaws.com/foliodocs/api/mod-users/r/users.html#users_get
|
|
129
|
+
client.users(query: 'username=="test*"')
|
|
130
|
+
=> {"users"=>
|
|
131
|
+
[{"username"=>"testing",
|
|
132
|
+
"id"=>"bbbadd51-c2f1-4107-a54d-52b39087725c",
|
|
133
|
+
"externalSystemId"=>"00324439",
|
|
134
|
+
"barcode"=>"2559202566",
|
|
135
|
+
"active"=>false,
|
|
136
|
+
"departments"=>[],
|
|
137
|
+
"proxyFor"=>[],
|
|
138
|
+
"personal"=>
|
|
139
|
+
{"lastName"=>"Testing",
|
|
140
|
+
"firstName"=>"Test",
|
|
141
|
+
"email"=>"foliotesting@lists.stanford.edu",
|
|
142
|
+
"addresses"=>
|
|
143
|
+
[{"countryId"=>"US",
|
|
144
|
+
"addressLine1"=>"13 Fake St",
|
|
145
|
+
"city"=>"Palo Alto",
|
|
146
|
+
"region"=>"California",
|
|
147
|
+
"postalCode"=>"94301",
|
|
148
|
+
"addressTypeId"=>"93d3d88d-499b-45d0-9bc7-ac73c3a19880",
|
|
149
|
+
"primaryAddress"=>true}]},
|
|
150
|
+
"createdDate"=>"2023-10-01T08:50:37.203+00:00",
|
|
151
|
+
"updatedDate"=>"2023-10-01T08:50:37.203+00:00",
|
|
152
|
+
"metadata"=>
|
|
153
|
+
{"createdDate"=>"2023-09-02T02:51:43.448+00:00",
|
|
154
|
+
"createdByUserId"=>"58d0aaf6-dcda-4d5e-92da-012e6b7dd766",
|
|
155
|
+
"updatedDate"=>"2023-10-01T08:50:37.196+00:00",
|
|
156
|
+
"updatedByUserId"=>"58d0aaf6-dcda-4d5e-92da-012e6b7dd766"},
|
|
157
|
+
"customFields"=>{"affiliation"=>"affiliate:sponsored"}}],
|
|
158
|
+
"totalRecords"=>1,
|
|
159
|
+
"resultInfo"=>{"totalRecords"=>1, "facets"=>[], "diagnostics"=>[]}}
|
|
160
|
+
|
|
161
|
+
# Get specific user info
|
|
162
|
+
# see https://s3.amazonaws.com/foliodocs/api/mod-users/r/users.html#users_get
|
|
163
|
+
client.user_details(id: 'bbbadd51-c2f1-4107-a54d-52b39087725c')
|
|
164
|
+
=> {"username"=>"testing",
|
|
165
|
+
"id"=>"bbbadd51-c2f1-4107-a54d-52b39087725c",
|
|
166
|
+
"externalSystemId"=>"00324439", ... # same response as above, but for single user
|
|
126
167
|
```
|
|
127
168
|
|
|
128
169
|
## Development
|
data/api_test.rb
CHANGED
|
@@ -23,6 +23,8 @@ pp(client.fetch_marc_hash(instance_hrid: "a666"))
|
|
|
23
23
|
puts client.fetch_marc_xml(instance_hrid: "a666")
|
|
24
24
|
puts client.fetch_marc_xml(barcode: "20503330279")
|
|
25
25
|
|
|
26
|
+
puts client.users(query: 'username=="pet*"')
|
|
27
|
+
|
|
26
28
|
records = marc_files.flat_map do |marc_file_path|
|
|
27
29
|
MARC::Reader.new(marc_file_path).to_a
|
|
28
30
|
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class FolioClient
|
|
4
|
+
# Query user records in Folio; see
|
|
5
|
+
# https://s3.amazonaws.com/foliodocs/api/mod-users/r/users.html
|
|
6
|
+
class Users
|
|
7
|
+
attr_accessor :client
|
|
8
|
+
|
|
9
|
+
# @param client [FolioClient] the configured client
|
|
10
|
+
def initialize(client)
|
|
11
|
+
@client = client
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @param query [String] an optional query to limit the number of users returned
|
|
15
|
+
# @param limit [Integer] the number of results to return (defaults to 10,000)
|
|
16
|
+
# @param offset [Integer] the offset for results returned (defaults to 0)
|
|
17
|
+
# @param lang [String] language code for returned results (defaults to 'en')
|
|
18
|
+
def fetch_list(query: nil, limit: 10000, offset: 0, lang: "en")
|
|
19
|
+
params = {limit: limit, offset: offset, lang: lang}
|
|
20
|
+
params[:query] = query if query
|
|
21
|
+
client.get("/users", params)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @param id [String] id for requested user
|
|
25
|
+
# @param lang [String] language code for returned results (defaults to 'en')
|
|
26
|
+
def fetch_user_details(id:, lang: "en")
|
|
27
|
+
client.get("/users/#{id}", {
|
|
28
|
+
lang: lang
|
|
29
|
+
})
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/folio_client/version.rb
CHANGED
data/lib/folio_client.rb
CHANGED
|
@@ -75,7 +75,8 @@ class FolioClient
|
|
|
75
75
|
:edit_marc_json, :fetch_external_id, :fetch_hrid, :fetch_instance_info,
|
|
76
76
|
:fetch_marc_hash, :fetch_marc_xml, :get, :has_instance_status?,
|
|
77
77
|
:http_get_headers, :http_post_and_put_headers, :interface_details,
|
|
78
|
-
:job_profiles, :organization_interfaces, :organizations, :
|
|
78
|
+
:job_profiles, :organization_interfaces, :organizations, :users, :user_details,
|
|
79
|
+
:post, :put, to:
|
|
79
80
|
:instance end
|
|
80
81
|
|
|
81
82
|
attr_accessor :config
|
|
@@ -232,6 +233,20 @@ class FolioClient
|
|
|
232
233
|
.fetch_interface_details(...)
|
|
233
234
|
end
|
|
234
235
|
|
|
236
|
+
# @see Users#fetch_list
|
|
237
|
+
def users(...)
|
|
238
|
+
Users
|
|
239
|
+
.new(self)
|
|
240
|
+
.fetch_list(...)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# @see Users#fetch_user_details
|
|
244
|
+
def user_details(...)
|
|
245
|
+
Users
|
|
246
|
+
.new(self)
|
|
247
|
+
.fetch_user_details(...)
|
|
248
|
+
end
|
|
249
|
+
|
|
235
250
|
def default_timeout
|
|
236
251
|
120
|
|
237
252
|
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.
|
|
4
|
+
version: 0.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Mangiafico
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-11-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -198,6 +198,7 @@ files:
|
|
|
198
198
|
- lib/folio_client/records_editor.rb
|
|
199
199
|
- lib/folio_client/source_storage.rb
|
|
200
200
|
- lib/folio_client/unexpected_response.rb
|
|
201
|
+
- lib/folio_client/users.rb
|
|
201
202
|
- lib/folio_client/version.rb
|
|
202
203
|
homepage: https://github.com/sul-dlss/folio_client
|
|
203
204
|
licenses: []
|
|
@@ -221,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
221
222
|
- !ruby/object:Gem::Version
|
|
222
223
|
version: '0'
|
|
223
224
|
requirements: []
|
|
224
|
-
rubygems_version: 3.4.
|
|
225
|
+
rubygems_version: 3.4.21
|
|
225
226
|
signing_key:
|
|
226
227
|
specification_version: 4
|
|
227
228
|
summary: Interface for interacting with the Folio ILS API.
|