relaton 1.15.4 → 1.15.5
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/lib/relaton/db.rb +8 -7
- data/lib/relaton/version.rb +1 -1
- data/spec/relaton/db_spec.rb +37 -34
- data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +19 -19
- data/spec/vcr_cassetes/api_relaton_org.yml +7 -7
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +2072 -2070
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +19 -19
- data/spec/vcr_cassetes/cie_001_1980.yml +20 -20
- data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +6 -6
- data/spec/vcr_cassetes/ecma_6.yml +19 -19
- data/spec/vcr_cassetes/en_10160_1999.yml +5006 -5006
- data/spec/vcr_cassetes/ieee_528_2019.yml +20 -20
- data/spec/vcr_cassetes/iso_111111119115_1.yml +9 -8
- data/spec/vcr_cassetes/iso_19115_1.yml +2240 -2238
- data/spec/vcr_cassetes/iso_19115_1_2.yml +4332 -4326
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +2245 -2242
- data/spec/vcr_cassetes/iso_19133_2005.yml +2273 -2269
- data/spec/vcr_cassetes/iso_combined_applied.yml +4193 -4189
- data/spec/vcr_cassetes/iso_combined_included.yml +4188 -4184
- data/spec/vcr_cassetes/iso_dis.yml +1958 -1955
- data/spec/vcr_cassetes/ogc_19_025r1.yml +185 -185
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +13 -13
- data/spec/vcr_cassetes/rfc_8341.yml +95 -93
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 660a04548bc776f45c6675c93929f092b9b09bf787f9c5327a0e77c4657396d6
|
4
|
+
data.tar.gz: 524d02188fb9b718b051a9278f367b5ba96b1cc9b7e3f22e0ef289dc2e637104
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a888ab93816385d62c1a16e75dfdeeced6138793f89bd37b4b9570642c9ba6ab9fe2046185f514f0083e3a3293af4644b4e3232ef32c3786a58cc1c8afdb872a
|
7
|
+
data.tar.gz: 715fdef1a7536b2cb8e42f89bb0aaa32ff11684e38787acc58afbebd94ff93c8c017166af1b518b92e53af2fbb9375ae7907d672081aa25694d9c77d0e111744
|
data/lib/relaton/db.rb
CHANGED
@@ -33,11 +33,11 @@ module Relaton
|
|
33
33
|
end
|
34
34
|
|
35
35
|
##
|
36
|
-
# The class of reference requested is determined by the prefix of the
|
36
|
+
# The class of reference requested is determined by the prefix of the reference:
|
37
37
|
# GB Standard for gbbib, IETF for ietfbib, ISO for isobib, IEC or IEV for
|
38
38
|
# iecbib,
|
39
39
|
#
|
40
|
-
# @param
|
40
|
+
# @param text [String] the standard reference to look up (e.g. "ISO 9000")
|
41
41
|
# @param year [String] the year the standard was published (optional)
|
42
42
|
#
|
43
43
|
# @param opts [Hash] options
|
@@ -55,14 +55,15 @@ module Relaton
|
|
55
55
|
# RelatonBipm::BipmBibliographicItem, RelatonIho::IhoBibliographicItem,
|
56
56
|
# RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
|
57
57
|
##
|
58
|
-
def fetch(
|
59
|
-
|
58
|
+
def fetch(text, year = nil, opts = {})
|
59
|
+
reference = text.strip
|
60
|
+
stdclass = @registry.class_by_ref(reference) || return
|
60
61
|
processor = @registry.processors[stdclass]
|
61
62
|
ref = if processor.respond_to?(:urn_to_code)
|
62
|
-
processor.urn_to_code(
|
63
|
-
else
|
63
|
+
processor.urn_to_code(reference)&.first
|
64
|
+
else reference
|
64
65
|
end
|
65
|
-
ref ||=
|
66
|
+
ref ||= reference
|
66
67
|
result = combine_doc ref, year, opts, stdclass
|
67
68
|
result || check_bibliocache(ref, year, opts, stdclass)
|
68
69
|
end
|
data/lib/relaton/version.rb
CHANGED
data/spec/relaton/db_spec.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
RSpec.describe Relaton::Db do
|
2
2
|
before(:each) { FileUtils.rm_rf %w[testcache testcache2] }
|
3
|
+
subject { Relaton::Db.new nil, nil }
|
3
4
|
|
4
5
|
context "instance methods" do
|
5
|
-
subject { Relaton::Db.new nil, nil }
|
6
|
-
|
7
6
|
context "#search_edition_year" do
|
8
7
|
it "create bibitem from YAML content" do
|
9
8
|
h = { "docid" => [{ "id" => "ISO 123", type: "ISO", "primary" => true }] }
|
@@ -164,21 +163,33 @@ RSpec.describe Relaton::Db do
|
|
164
163
|
expect(db.docid_type("CN(GB/T 1.1)")).to eq ["Chinese Standard", "GB/T 1.1"]
|
165
164
|
end
|
166
165
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
174
|
-
end
|
175
|
-
|
176
|
-
it "fetch when no local db" do
|
177
|
-
db = Relaton::Db.new "testcache", nil
|
178
|
-
VCR.use_cassette "iso_19115_1" do
|
179
|
-
bib = db.fetch("ISO 19115-1", nil, {})
|
166
|
+
context "#fetch" do
|
167
|
+
it "doesn't use cache" do
|
168
|
+
docid = RelatonBib::DocumentIdentifier.new id: "ISO 19115-1", type: "ISO"
|
169
|
+
item = RelatonIsoBib::IsoBibliographicItem.new docid: [docid]
|
170
|
+
expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 19115-1", nil, {}).and_return item
|
171
|
+
bib = subject.fetch("ISO 19115-1", nil, {})
|
180
172
|
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
181
173
|
end
|
174
|
+
|
175
|
+
it "when no local db" do
|
176
|
+
db = Relaton::Db.new "testcache", nil
|
177
|
+
VCR.use_cassette "iso_19115_1" do
|
178
|
+
bib = db.fetch("ISO 19115-1", nil, {})
|
179
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
it "document with net retries" do
|
184
|
+
expect(subject.instance_variable_get(:@registry).processors[:relaton_ietf]).to receive(:get)
|
185
|
+
.and_raise(RelatonBib::RequestError).exactly(3).times
|
186
|
+
expect { subject.fetch "RFC 8341", nil, retries: 3 }.to raise_error RelatonBib::RequestError
|
187
|
+
end
|
188
|
+
|
189
|
+
it "strip reference" do
|
190
|
+
expect(subject).to receive(:combine_doc).with("ISO 19115-1", nil, {}, :relaton_iso).and_return :doc
|
191
|
+
expect(subject.fetch(" ISO 19115-1 ", nil, {})).to be :doc
|
192
|
+
end
|
182
193
|
end
|
183
194
|
|
184
195
|
it "fetch std" do
|
@@ -189,15 +200,7 @@ RSpec.describe Relaton::Db do
|
|
189
200
|
end
|
190
201
|
end
|
191
202
|
|
192
|
-
it "fetch document with net retries" do
|
193
|
-
db = Relaton::Db.new nil, nil
|
194
|
-
expect(db.instance_variable_get(:@registry).processors[:relaton_ietf]).to receive(:get)
|
195
|
-
.and_raise(RelatonBib::RequestError).exactly(3).times
|
196
|
-
expect { db.fetch "RFC 8341", nil, retries: 3 }.to raise_error RelatonBib::RequestError
|
197
|
-
end
|
198
|
-
|
199
203
|
context "async fetch" do
|
200
|
-
let(:db) { Relaton::Db.new nil, nil }
|
201
204
|
let(:queue) { Queue.new }
|
202
205
|
|
203
206
|
it "success" do
|
@@ -206,8 +209,8 @@ RSpec.describe Relaton::Db do
|
|
206
209
|
"ITU-T G.780/Y.1351", "ITU-T G.711", "ITU-T G.1011"]
|
207
210
|
results = []
|
208
211
|
refs.each do |ref|
|
209
|
-
expect(
|
210
|
-
|
212
|
+
expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
|
213
|
+
subject.fetch_async(ref) { |r| queue << [r, ref] }
|
211
214
|
end
|
212
215
|
Timeout.timeout(60) { refs.size.times { results << queue.pop } }
|
213
216
|
results.each do |result|
|
@@ -220,8 +223,8 @@ RSpec.describe Relaton::Db do
|
|
220
223
|
"CGPM -- Réunion 9 (1948)", "CGPM -- Meeting 9 (1948)"]
|
221
224
|
results = []
|
222
225
|
refs.each do |ref|
|
223
|
-
expect(
|
224
|
-
|
226
|
+
expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
|
227
|
+
subject.fetch_async(ref) { |r| queue << [r, ref] }
|
225
228
|
end
|
226
229
|
Timeout.timeout(60) { refs.size.times { results << queue.pop } }
|
227
230
|
results.each do |result|
|
@@ -232,23 +235,23 @@ RSpec.describe Relaton::Db do
|
|
232
235
|
it "prefix not found" do
|
233
236
|
result = ""
|
234
237
|
VCR.use_cassette "rfc_unsuccess" do
|
235
|
-
|
238
|
+
subject.fetch_async("ABC 123456") { |r| queue << r }
|
236
239
|
Timeout.timeout(5) { result = queue.pop }
|
237
240
|
end
|
238
241
|
expect(result).to be_nil
|
239
242
|
end
|
240
243
|
|
241
244
|
it "handle HTTP request error" do
|
242
|
-
expect(
|
243
|
-
|
245
|
+
expect(subject).to receive(:fetch).and_raise RelatonBib::RequestError
|
246
|
+
subject.fetch_async("ISO REF") { |r| queue << r }
|
244
247
|
result = Timeout.timeout(5) { queue.pop }
|
245
248
|
expect(result).to be_instance_of RelatonBib::RequestError
|
246
249
|
end
|
247
250
|
|
248
251
|
it "handle other errors" do
|
249
|
-
expect(
|
252
|
+
expect(subject).to receive(:fetch).and_raise Errno::EACCES
|
250
253
|
expect do
|
251
|
-
|
254
|
+
subject.fetch_async("ISO REF") { |r| queue << r }
|
252
255
|
result = Timeout.timeout(5) { queue.pop }
|
253
256
|
expect(result).to be_nil
|
254
257
|
end.to output("[relaton] ERROR: ISO REF -- Permission denied\n").to_stderr
|
@@ -258,8 +261,8 @@ RSpec.describe Relaton::Db do
|
|
258
261
|
expect(ENV).to receive(:[]).with("RELATON_FETCH_PARALLEL").and_return(1)
|
259
262
|
allow(ENV).to receive(:[]).and_call_original
|
260
263
|
expect(Relaton::WorkersPool).to receive(:new).with(1).and_call_original
|
261
|
-
expect(
|
262
|
-
|
264
|
+
expect(subject).to receive(:fetch).with("ITU-T G.993.5", nil, {})
|
265
|
+
subject.fetch_async("ITU-T G.993.5") { |r| queue << r }
|
263
266
|
Timeout.timeout(50) { queue.pop }
|
264
267
|
end
|
265
268
|
end
|
@@ -29,7 +29,7 @@ http_interactions:
|
|
29
29
|
Content-Type:
|
30
30
|
- application/zip
|
31
31
|
Etag:
|
32
|
-
- W/"
|
32
|
+
- W/"15c57459dcf3d700d40495db041ca9831bea6bb240d07bb5a9508489f4231a7f"
|
33
33
|
Strict-Transport-Security:
|
34
34
|
- max-age=31536000
|
35
35
|
X-Content-Type-Options:
|
@@ -39,21 +39,21 @@ http_interactions:
|
|
39
39
|
X-Xss-Protection:
|
40
40
|
- 1; mode=block
|
41
41
|
X-Github-Request-Id:
|
42
|
-
-
|
42
|
+
- C69A:69C7:AED261:C6DC63:64C53486
|
43
43
|
Accept-Ranges:
|
44
44
|
- bytes
|
45
45
|
Date:
|
46
|
-
-
|
46
|
+
- Sat, 29 Jul 2023 15:47:19 GMT
|
47
47
|
Via:
|
48
48
|
- 1.1 varnish
|
49
49
|
X-Served-By:
|
50
|
-
- cache-
|
50
|
+
- cache-iad-kcgs7200022-IAD
|
51
51
|
X-Cache:
|
52
52
|
- MISS
|
53
53
|
X-Cache-Hits:
|
54
54
|
- '0'
|
55
55
|
X-Timer:
|
56
|
-
-
|
56
|
+
- S1690645640.757024,VS0,VE152
|
57
57
|
Vary:
|
58
58
|
- Authorization,Accept-Encoding,Origin
|
59
59
|
Access-Control-Allow-Origin:
|
@@ -61,16 +61,16 @@ http_interactions:
|
|
61
61
|
Cross-Origin-Resource-Policy:
|
62
62
|
- cross-origin
|
63
63
|
X-Fastly-Request-Id:
|
64
|
-
-
|
64
|
+
- 76f4c465d73b6bb64ca9e85a06690e6d0e6b4c6a
|
65
65
|
Expires:
|
66
|
-
-
|
66
|
+
- Sat, 29 Jul 2023 15:52:19 GMT
|
67
67
|
Source-Age:
|
68
68
|
- '0'
|
69
69
|
body:
|
70
70
|
encoding: UTF-8
|
71
71
|
base64_string: |
|
72
|
-
|
73
|
-
|
72
|
+
UEsDBBQAAAAIAO5x/FZm2jZFNLUHABZeUAANABwAaW5kZXgtdjEueWFtbFVU
|
73
|
+
CQADgM3DZPDNw2R1eAsAAQTpAwAABHsAAACM/cGuLTuOJArO31fkD0TeLblc
|
74
74
|
Lt1pVQI96AQebkQANTt4qMyHfkD1qGpQ/fd9li+XRK1FM+PoIuJssyWXKJIi
|
75
75
|
Kepvf/vb//G3f/nz//mPP//lH3/9y8/Pv/6kf/75z3//x9//OP719//4P/7l
|
76
76
|
X/78v/+f//Gff/7Lf/xf/+v/+uMff/16/8mv15/8uv/kX/9//9f/939AjqQ5
|
@@ -11296,10 +11296,10 @@ http_interactions:
|
|
11296
11296
|
rrxmUhWRmbSOyEyqIjKT1hGZSVVEZtI6IjOpishMWkdkJlURmUkqIv8ru70S
|
11297
11297
|
Z9ntlShFt1eiLLu9EqWomSbKsmb6RtFjvKxTflAWU9AH5WMG+qAsJo4Pyse8
|
11298
11298
|
saB8TGMLykYoRc00UZY10w+KGpdlz1iiFJXXRFlWXhOlqLwmSqq8/h9QSwEC
|
11299
|
-
|
11300
|
-
|
11299
|
+
HgMUAAAACADucfxWZto2RTS1BwAWXlAADQAYAAAAAAABAAAApIEAAAAAaW5k
|
11300
|
+
ZXgtdjEueWFtbFVUBQADgM3DZHV4CwABBOkDAAAEewAAAFBLBQYAAAAAAQAB
|
11301
11301
|
AFMAAAB7tQcAAAA=
|
11302
|
-
recorded_at:
|
11302
|
+
recorded_at: Sat, 29 Jul 2023 15:47:20 GMT
|
11303
11303
|
- request:
|
11304
11304
|
method: get
|
11305
11305
|
uri: https://raw.githubusercontent.com/relaton/relaton-data-3gpp/main/data/TR_00.01U_UMTS_3.0.0.yaml
|
@@ -11341,21 +11341,21 @@ http_interactions:
|
|
11341
11341
|
X-Xss-Protection:
|
11342
11342
|
- 1; mode=block
|
11343
11343
|
X-Github-Request-Id:
|
11344
|
-
-
|
11344
|
+
- 3588:4477:9C13AD:B41D5C:64C5348B
|
11345
11345
|
Accept-Ranges:
|
11346
11346
|
- bytes
|
11347
11347
|
Date:
|
11348
|
-
-
|
11348
|
+
- Sat, 29 Jul 2023 15:47:23 GMT
|
11349
11349
|
Via:
|
11350
11350
|
- 1.1 varnish
|
11351
11351
|
X-Served-By:
|
11352
|
-
- cache-
|
11352
|
+
- cache-iad-kcgs7200034-IAD
|
11353
11353
|
X-Cache:
|
11354
11354
|
- MISS
|
11355
11355
|
X-Cache-Hits:
|
11356
11356
|
- '0'
|
11357
11357
|
X-Timer:
|
11358
|
-
-
|
11358
|
+
- S1690645643.136097,VS0,VE135
|
11359
11359
|
Vary:
|
11360
11360
|
- Authorization,Accept-Encoding,Origin
|
11361
11361
|
Access-Control-Allow-Origin:
|
@@ -11363,9 +11363,9 @@ http_interactions:
|
|
11363
11363
|
Cross-Origin-Resource-Policy:
|
11364
11364
|
- cross-origin
|
11365
11365
|
X-Fastly-Request-Id:
|
11366
|
-
-
|
11366
|
+
- 6afc467a2227ed85c58ed42c0bb25df92ab8027e
|
11367
11367
|
Expires:
|
11368
|
-
-
|
11368
|
+
- Sat, 29 Jul 2023 15:52:23 GMT
|
11369
11369
|
Source-Age:
|
11370
11370
|
- '0'
|
11371
11371
|
body:
|
@@ -11406,5 +11406,5 @@ http_interactions:
|
|
11406
11406
|
bWVldGluZzogU01HLTI4CiAgZnJlZXplX3N0YWdlMl9tZWV0aW5nOiBTTUct
|
11407
11407
|
MjgKICBmcmVlemVfc3RhZ2UzX21lZXRpbmc6IFNNRy0yOAogIGNsb3NlX21l
|
11408
11408
|
ZXRpbmc6IFNQLTI4CiAgcHJvamVjdF9lbmQ6ICcxOTk5LTAyLTEyJwo=
|
11409
|
-
recorded_at:
|
11409
|
+
recorded_at: Sat, 29 Jul 2023 15:47:23 GMT
|
11410
11410
|
recorded_with: VCR 6.2.0
|
@@ -27,27 +27,27 @@ http_interactions:
|
|
27
27
|
Connection:
|
28
28
|
- keep-alive
|
29
29
|
Date:
|
30
|
-
-
|
30
|
+
- Sat, 29 Jul 2023 15:48:02 GMT
|
31
31
|
X-Amzn-Requestid:
|
32
|
-
-
|
32
|
+
- 330853d3-ec28-4588-9aa2-372ef02c4a70
|
33
33
|
Access-Control-Allow-Origin:
|
34
34
|
- "*"
|
35
35
|
Access-Control-Allow-Headers:
|
36
36
|
- Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
|
37
37
|
X-Amz-Apigw-Id:
|
38
|
-
-
|
38
|
+
- I1UptG0AoAMFoPQ=
|
39
39
|
Access-Control-Allow-Methods:
|
40
40
|
- GET, POST, OPTIONS
|
41
41
|
X-Amzn-Trace-Id:
|
42
|
-
- Root=1-
|
42
|
+
- Root=1-64c534a4-555c478b697cc6d6081afe9f;Sampled=0;lineage=521d48d5:0
|
43
43
|
X-Cache:
|
44
44
|
- Miss from cloudfront
|
45
45
|
Via:
|
46
|
-
- 1.1
|
46
|
+
- 1.1 52e2243a8168629f98bb0607016f7224.cloudfront.net (CloudFront)
|
47
47
|
X-Amz-Cf-Pop:
|
48
48
|
- ATL51-C1
|
49
49
|
X-Amz-Cf-Id:
|
50
|
-
-
|
50
|
+
- Ke1TVShWUJU_5veEOUEhW9I6EKvlGGvtDmraRpsn77Nkum6GeeOypQ==
|
51
51
|
body:
|
52
52
|
encoding: UTF-8
|
53
53
|
base64_string: |
|
@@ -117,5 +117,5 @@ http_interactions:
|
|
117
117
|
dHJ1Y3R1cmVkaWRlbnRpZmllciB0eXBlPSJJU08iPgogICAgICA8cHJvamVj
|
118
118
|
dC1udW1iZXI+SVNPIDE5MTE1PC9wcm9qZWN0LW51bWJlcj4KICAgIDwvc3Ry
|
119
119
|
dWN0dXJlZGlkZW50aWZpZXI+CiAgPC9leHQ+CjwvYmliZGF0YT4=
|
120
|
-
recorded_at:
|
120
|
+
recorded_at: Sat, 29 Jul 2023 15:48:02 GMT
|
121
121
|
recorded_with: VCR 6.2.0
|