berkeley_library-util 0.1.2 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c52542412eba63da568f64ede565f97e941321d108f42e89920341df02a268b2
|
4
|
+
data.tar.gz: 3a56f6a5dd154c44d3d94e601f3093a8c4aca81e05fb3f7e18cd70ca6389f930
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ff8d42319d6faa217bb540d7276a7dd48499a9660242a3c875496594105a16a6bd63190ea234781b8950d269548d4400cabcf87292a161eb16cf8f5a3d205b8
|
7
|
+
data.tar.gz: ebfbe371422bbbb59587d583409200968742511013aa49df1f2922df5c9880102c3014ebe7622a7be663cd327a5a742f69c622e8369a912929edad1cc4a0b4fe
|
data/CHANGES.md
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
+
# 0.1.3 (2022-05-11)
|
2
|
+
|
3
|
+
- Adds `URIs#get_response`, which returns a complete `RestClient::Response` rather than just
|
4
|
+
the response body.
|
5
|
+
|
1
6
|
# 0.1.2 (2022-05-05)
|
2
7
|
|
3
8
|
- Adds `BerkeleyLibrary::Files`, which contains file and IO utility methods
|
4
9
|
|
5
10
|
# 0.1.1 (2021-09-23)
|
6
11
|
|
7
|
-
- `URIs
|
12
|
+
- `URIs#append` now handles bare URLs with empty paths, with the caveat that
|
8
13
|
a root path `/` will always be added, even if there are no path elements to append.
|
9
14
|
|
10
15
|
# 0.1.0 (2021-09-23)
|
@@ -7,7 +7,7 @@ module BerkeleyLibrary
|
|
7
7
|
SUMMARY = 'Miscellaneous Ruby utilities for the UC Berkeley Library'.freeze
|
8
8
|
DESCRIPTION = 'A collection of miscellaneous Ruby routines for the UC Berkeley Library.'.freeze
|
9
9
|
LICENSE = 'MIT'.freeze
|
10
|
-
VERSION = '0.1.
|
10
|
+
VERSION = '0.1.3'.freeze
|
11
11
|
HOMEPAGE = 'https://github.com/BerkeleyLibrary/util'.freeze
|
12
12
|
end
|
13
13
|
end
|
@@ -10,7 +10,7 @@ module BerkeleyLibrary
|
|
10
10
|
class << self
|
11
11
|
include BerkeleyLibrary::Logging
|
12
12
|
|
13
|
-
# Performs a GET request.
|
13
|
+
# Performs a GET request and returns the response body as a string.
|
14
14
|
#
|
15
15
|
# @param uri [URI, String] the URI to GET
|
16
16
|
# @param params [Hash] the query parameters to add to the URI. (Note that the URI may already include query parameters.)
|
@@ -18,13 +18,29 @@ module BerkeleyLibrary
|
|
18
18
|
# @return [String] the body as a string.
|
19
19
|
# @raise [RestClient::Exception] in the event of an error.
|
20
20
|
def get(uri, params: {}, headers: {})
|
21
|
-
|
22
|
-
resp = get_or_raise(url_str, headers)
|
21
|
+
resp = make_get_request(uri, params, headers)
|
23
22
|
resp.body
|
24
23
|
end
|
25
24
|
|
25
|
+
# Performs a GET request and returns the response.
|
26
|
+
#
|
27
|
+
# @param uri [URI, String] the URI to GET
|
28
|
+
# @param params [Hash] the query parameters to add to the URI. (Note that the URI may already include query parameters.)
|
29
|
+
# @param headers [Hash] the request headers.
|
30
|
+
# @return [RestClient::Response] the body as a string.
|
31
|
+
def get_response(uri, params: {}, headers: {})
|
32
|
+
make_get_request(uri, params, headers)
|
33
|
+
rescue RestClient::Exception => e
|
34
|
+
e.response
|
35
|
+
end
|
36
|
+
|
26
37
|
private
|
27
38
|
|
39
|
+
def make_get_request(uri, params, headers)
|
40
|
+
url_str = url_str_with_params(uri, params)
|
41
|
+
get_or_raise(url_str, headers)
|
42
|
+
end
|
43
|
+
|
28
44
|
def url_str_with_params(uri, params)
|
29
45
|
raise ArgumentError, 'uri cannot be nil' unless (url_str = Validator.url_str_or_nil(uri))
|
30
46
|
|
@@ -40,6 +56,7 @@ module BerkeleyLibrary
|
|
40
56
|
uri.to_s
|
41
57
|
end
|
42
58
|
|
59
|
+
# @return [RestClient::Response]
|
43
60
|
def get_or_raise(url_str, headers)
|
44
61
|
resp = RestClient.get(url_str, headers)
|
45
62
|
begin
|
@@ -47,6 +64,7 @@ module BerkeleyLibrary
|
|
47
64
|
|
48
65
|
raise(exception_for(resp, status))
|
49
66
|
ensure
|
67
|
+
# noinspection RubyMismatchedReturnType
|
50
68
|
logger.info("GET #{url_str} returned #{status}")
|
51
69
|
end
|
52
70
|
end
|
@@ -32,6 +32,16 @@ module BerkeleyLibrary
|
|
32
32
|
Requester.get(uri, params: params, headers: headers)
|
33
33
|
end
|
34
34
|
|
35
|
+
# Performs a GET request and returns the response.
|
36
|
+
#
|
37
|
+
# @param uri [URI, String] the URI to GET
|
38
|
+
# @param params [Hash] the query parameters to add to the URI. (Note that the URI may already include query parameters.)
|
39
|
+
# @param headers [Hash] the request headers.
|
40
|
+
# @return [RestClient::Response] the body as a string.
|
41
|
+
def get_response(uri, params: {}, headers: {})
|
42
|
+
Requester.get_response(uri, params: params, headers: headers)
|
43
|
+
end
|
44
|
+
|
35
45
|
# Returns the specified URL as a URI.
|
36
46
|
# @param url [String, URI] the URL.
|
37
47
|
# @return [URI] the URI.
|
@@ -138,18 +138,44 @@ module BerkeleyLibrary::Util
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
describe
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
141
|
+
describe 'requests' do
|
142
|
+
let(:url) { 'https://example.org/' }
|
143
|
+
let(:params) { { p1: 1, p2: 2 } }
|
144
|
+
let(:headers) { { 'X-help' => 'I am trapped in a unit test' } }
|
145
|
+
let(:url_with_query) { "#{url}?#{URI.encode_www_form(params)}" }
|
146
|
+
let(:expected_body) { 'Help! I am trapped in a unit test' }
|
147
|
+
|
148
|
+
describe :get do
|
149
|
+
it 'makes a GET request' do
|
150
|
+
stub_request(:get, url_with_query).with(headers: headers).to_return(body: expected_body)
|
151
|
+
|
152
|
+
result = URIs.get(url, params: params, headers: headers)
|
153
|
+
expect(result).to eq(expected_body)
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'raises an error in the event of a 404' do
|
157
|
+
stub_request(:get, url_with_query).with(headers: headers).to_return(status: 404, body: expected_body)
|
158
|
+
|
159
|
+
expect { URIs.get(url, params: params, headers: headers) }.to raise_error(RestClient::NotFound)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
describe :get_response do
|
164
|
+
it 'makes a GET request' do
|
165
|
+
stub_request(:get, url_with_query).with(headers: headers).to_return(body: expected_body)
|
166
|
+
|
167
|
+
response = URIs.get_response(url, params: params, headers: headers)
|
168
|
+
expect(response.body).to eq(expected_body)
|
169
|
+
expect(response.code).to eq(200)
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'returns the response even for errors' do
|
173
|
+
stub_request(:get, url_with_query).with(headers: headers).to_return(status: 404, body: expected_body)
|
174
|
+
|
175
|
+
response = URIs.get_response(url, params: params, headers: headers)
|
176
|
+
expect(response.body).to eq(expected_body)
|
177
|
+
expect(response.code).to eq(404)
|
178
|
+
end
|
153
179
|
end
|
154
180
|
end
|
155
181
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkeley_library-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Moles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: berkeley_library-logging
|