relaton 1.8.0 → 1.9.2
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/.github/workflows/rake.yml +1 -11
- data/.rubocop.yml +1 -1
- data/docs/README.adoc +7 -6
- data/lib/relaton/db.rb +36 -3
- data/lib/relaton/processor.rb +13 -2
- data/lib/relaton/registry.rb +12 -0
- data/lib/relaton/version.rb +1 -1
- data/relaton.gemspec +22 -22
- data/spec/relaton/db_spec.rb +4 -2
- data/spec/relaton/processor_spec.rb +4 -0
- data/spec/relaton/{regirtry_spec.rb → registry_spec.rb} +14 -0
- data/spec/relaton_spec.rb +26 -12
- data/spec/vcr_cassetes/api_relaton_org.yml +57 -0
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +198 -0
- data/spec/vcr_cassetes/async_fetch.yml +1572 -1416
- data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +113 -114
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +20 -20
- data/spec/vcr_cassetes/cen_en_10160_1999.yml +249 -0
- data/spec/vcr_cassetes/cie_001_1980.yml +8 -8
- data/spec/vcr_cassetes/ecma_6.yml +8 -8
- data/spec/vcr_cassetes/fisp_140.yml +6 -59
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +8 -8
- data/spec/vcr_cassetes/iec_60050_102_2007.yml +28 -28
- data/spec/vcr_cassetes/iec_combined_included.yml +100 -100
- data/spec/vcr_cassetes/ieee_528_2019.yml +37 -37
- data/spec/vcr_cassetes/iho_b_11.yml +8 -8
- data/spec/vcr_cassetes/iso_111111119115_1.yml +45 -26
- data/spec/vcr_cassetes/iso_19115_1.yml +57 -41
- data/spec/vcr_cassetes/iso_19115_1_2.yml +113 -81
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +198 -0
- data/spec/vcr_cassetes/iso_19133_2005.yml +198 -0
- data/spec/vcr_cassetes/iso_cd_14093.yml +202 -0
- data/spec/vcr_cassetes/iso_combined_applied.yml +114 -82
- data/spec/vcr_cassetes/iso_combined_included.yml +112 -80
- data/spec/vcr_cassetes/itu_combined_included.yml +315 -199
- data/spec/vcr_cassetes/ogc_19_025r1.yml +14 -13074
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +4 -4
- data/spec/vcr_cassetes/rfc_8341.yml +8 -8
- data/spec/vcr_cassetes/sp_800_38b.yml +6 -59
- data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +34 -36
- data/spec/vcr_cassetes/w3c_json_ld11.yml +12 -12
- metadata +96 -54
- data/spec/vcr_cassetes/19133_2005.yml +0 -182
- data/spec/vcr_cassetes/hist_cmbined_included.yml +0 -105
- data/spec/vcr_cassetes/iso_19115.yml +0 -182
- data/spec/vcr_cassetes/iso_awi_14093.yml +0 -182
- data/spec/vcr_cassetes/iso_iec_guide_2.yml +0 -232
- data/spec/vcr_cassetes/rfc_unsuccess.yml +0 -70
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 00617ed8db3b679a9c44d7b8854b17c16d48f10b84a30bbc2e175113d02e9025
|
|
4
|
+
data.tar.gz: 198a87943ebe8f2ffdeabfc0c1ec12a9499ec9642d90ca393a8c26440f3acf3f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2bf33ca669f3b719eea8e9add8a107e9f54e86ffcfda53d3845fe5dd109f08cde651b08024dda622f5d3438f8dce51d142c8b1f886e5b45b7ef481242b9212ea
|
|
7
|
+
data.tar.gz: bf242855dfb87ff3920907cf69616b2831c8ce35e65342327d0cfee3182b252bbceca244fbd30cdb097f09befc90769c9c4b72847b52cea852ddd3dc9c2d7441
|
data/.github/workflows/rake.yml
CHANGED
|
@@ -16,19 +16,9 @@ jobs:
|
|
|
16
16
|
strategy:
|
|
17
17
|
fail-fast: false
|
|
18
18
|
matrix:
|
|
19
|
-
ruby: [ '
|
|
19
|
+
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
|
20
20
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
|
21
21
|
experimental: [ false ]
|
|
22
|
-
include:
|
|
23
|
-
- ruby: '3.0'
|
|
24
|
-
os: 'ubuntu-latest'
|
|
25
|
-
experimental: true
|
|
26
|
-
- ruby: '3.0'
|
|
27
|
-
os: 'windows-latest'
|
|
28
|
-
experimental: true
|
|
29
|
-
- ruby: '3.0'
|
|
30
|
-
os: 'macos-latest'
|
|
31
|
-
experimental: true
|
|
32
22
|
steps:
|
|
33
23
|
- uses: actions/checkout@v2
|
|
34
24
|
with:
|
data/.rubocop.yml
CHANGED
data/docs/README.adoc
CHANGED
|
@@ -182,20 +182,21 @@ x = db.fetch_db("ISO 5749")
|
|
|
182
182
|
# prepare queue for results
|
|
183
183
|
results = Queue.new
|
|
184
184
|
|
|
185
|
-
# references
|
|
185
|
+
# references to fetch
|
|
186
186
|
refs = ["ISO 19011", "ISO 19115"]
|
|
187
187
|
|
|
188
188
|
# fetch documents
|
|
189
189
|
refs.each do |ref|
|
|
190
|
-
db.fetch_async(ref) do |doc|
|
|
191
|
-
results << [
|
|
190
|
+
db.fetch_async(ref, ref: ref) do |doc, other_args|
|
|
191
|
+
results << [doc, other_args[:ref]]
|
|
192
192
|
end
|
|
193
193
|
end
|
|
194
194
|
|
|
195
|
-
# wait until
|
|
195
|
+
# wait until all the documents fetching
|
|
196
196
|
refs.size.times do
|
|
197
|
-
|
|
198
|
-
# do
|
|
197
|
+
doc, ref = results.pop
|
|
198
|
+
# do whatever you need with the result
|
|
199
|
+
# in case request error doc will be instance of Relaton::RequestError
|
|
199
200
|
end
|
|
200
201
|
----
|
|
201
202
|
|
data/lib/relaton/db.rb
CHANGED
|
@@ -99,16 +99,20 @@ module Relaton
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
# Fetch asynchronously
|
|
102
|
-
def fetch_async(code, year = nil, opts = {}, &_block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
102
|
+
def fetch_async(code, year = nil, opts = {}, **others, &_block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
103
103
|
stdclass = standard_class code
|
|
104
104
|
if stdclass
|
|
105
105
|
unless @queues[stdclass]
|
|
106
106
|
processor = @registry.processors[stdclass]
|
|
107
|
-
wp = WorkersPool.new(processor.threads)
|
|
107
|
+
wp = WorkersPool.new(processor.threads) do |args|
|
|
108
|
+
yield fetch(*args[0..2]), **args[3]
|
|
109
|
+
rescue RelatonBib::RequestError => e
|
|
110
|
+
yield e, **args[3]
|
|
111
|
+
end
|
|
108
112
|
@queues[stdclass] = { queue: Queue.new, workers_pool: wp }
|
|
109
113
|
Thread.new { process_queue @queues[stdclass] }
|
|
110
114
|
end
|
|
111
|
-
@queues[stdclass][:queue] << [code, year, opts]
|
|
115
|
+
@queues[stdclass][:queue] << [code, year, opts, others]
|
|
112
116
|
else yield nil
|
|
113
117
|
end
|
|
114
118
|
end
|
|
@@ -469,5 +473,34 @@ module Relaton
|
|
|
469
473
|
def process_queue(qwp)
|
|
470
474
|
while args = qwp[:queue].pop; qwp[:workers_pool] << args end
|
|
471
475
|
end
|
|
476
|
+
|
|
477
|
+
class << self
|
|
478
|
+
# Initialse and return relaton instance, with local and global cache names
|
|
479
|
+
# local_cache: local cache name; none created if nil; "relaton" created
|
|
480
|
+
# if empty global_cache: boolean to create global_cache
|
|
481
|
+
# flush_caches: flush caches
|
|
482
|
+
def init_bib_caches(**opts) # rubocop:disable Metrics/CyclomaticComplexity
|
|
483
|
+
globalname = global_bibliocache_name if opts[:global_cache]
|
|
484
|
+
localname = local_bibliocache_name(opts[:local_cache])
|
|
485
|
+
flush_caches globalname, localname if opts[:flush_caches]
|
|
486
|
+
Relaton::Db.new(globalname, localname)
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
private
|
|
490
|
+
|
|
491
|
+
def flush_caches(gcache, lcache)
|
|
492
|
+
FileUtils.rm_rf gcache unless gcache.nil?
|
|
493
|
+
FileUtils.rm_rf lcache unless lcache.nil?
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
def global_bibliocache_name
|
|
497
|
+
"#{Dir.home}/.relaton/cache"
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
def local_bibliocache_name(cachename)
|
|
501
|
+
cachename = "relaton" if cachename.nil? || cachename.empty?
|
|
502
|
+
"#{cachename}/cache"
|
|
503
|
+
end
|
|
504
|
+
end
|
|
472
505
|
end
|
|
473
506
|
end
|
data/lib/relaton/processor.rb
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
module Relaton
|
|
2
2
|
class Processor
|
|
3
|
+
# @rerurn [Symbol]
|
|
3
4
|
attr_reader :short
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
# @return [String]
|
|
7
|
+
attr_reader :prefix, :idtype
|
|
8
|
+
|
|
9
|
+
# @return [Regexp]
|
|
5
10
|
attr_reader :defaultprefix
|
|
6
|
-
|
|
11
|
+
|
|
12
|
+
# @return [Array<String>]
|
|
13
|
+
attr_reader :datasets
|
|
7
14
|
|
|
8
15
|
def initialize
|
|
9
16
|
raise "This is an abstract class!"
|
|
@@ -13,6 +20,10 @@ module Relaton
|
|
|
13
20
|
raise "This is an abstract class!"
|
|
14
21
|
end
|
|
15
22
|
|
|
23
|
+
def fetch_data(_source, _opts)
|
|
24
|
+
raise "This is an abstract class!"
|
|
25
|
+
end
|
|
26
|
+
|
|
16
27
|
def from_xml(_xml)
|
|
17
28
|
raise "This is an abstract class!"
|
|
18
29
|
end
|
data/lib/relaton/registry.rb
CHANGED
|
@@ -9,6 +9,7 @@ module Relaton
|
|
|
9
9
|
relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
|
|
10
10
|
relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
|
|
11
11
|
relaton_ieee relaton_iho relaton_bipm relaton_ecma relaton_cie relaton_bsi
|
|
12
|
+
relaton_cen
|
|
12
13
|
].freeze
|
|
13
14
|
|
|
14
15
|
include Singleton
|
|
@@ -53,6 +54,17 @@ module Relaton
|
|
|
53
54
|
processors.keys
|
|
54
55
|
end
|
|
55
56
|
|
|
57
|
+
#
|
|
58
|
+
# Search a rpocessos by dataset name
|
|
59
|
+
#
|
|
60
|
+
# @param [String] dataset
|
|
61
|
+
#
|
|
62
|
+
# @return [Relaton::Processor, nil]
|
|
63
|
+
#
|
|
64
|
+
def find_processor_by_dataset(dataset)
|
|
65
|
+
processors.values.detect { |p| p.datasets&.include? dataset }
|
|
66
|
+
end
|
|
67
|
+
|
|
56
68
|
#
|
|
57
69
|
# Find processor by type
|
|
58
70
|
#
|
data/lib/relaton/version.rb
CHANGED
data/relaton.gemspec
CHANGED
|
@@ -27,37 +27,37 @@ Gem::Specification.new do |spec|
|
|
|
27
27
|
spec.require_paths = ["lib"]
|
|
28
28
|
spec.files = `git ls-files`.split("\n")
|
|
29
29
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
|
30
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
|
30
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
spec.add_dependency "relaton-
|
|
34
|
-
spec.add_dependency "relaton-
|
|
35
|
-
spec.add_dependency "relaton-
|
|
36
|
-
spec.add_dependency "relaton-cie", "~> 1.
|
|
37
|
-
spec.add_dependency "relaton-ecma", "~> 1.
|
|
38
|
-
spec.add_dependency "relaton-gb", "~> 1.
|
|
39
|
-
spec.add_dependency "relaton-iec", "
|
|
40
|
-
spec.add_dependency "relaton-ieee", "~> 1.
|
|
41
|
-
spec.add_dependency "relaton-ietf", "~> 1.
|
|
42
|
-
spec.add_dependency "relaton-iho", "~> 1.
|
|
43
|
-
spec.add_dependency "relaton-iso", "
|
|
44
|
-
spec.add_dependency "relaton-itu", "
|
|
45
|
-
spec.add_dependency "relaton-nist", ">= 1.
|
|
46
|
-
spec.add_dependency "relaton-ogc", "~> 1.
|
|
47
|
-
spec.add_dependency "relaton-omg", "~> 1.
|
|
48
|
-
spec.add_dependency "relaton-un", "~> 1.
|
|
49
|
-
spec.add_dependency "relaton-w3c", "~> 1.
|
|
32
|
+
spec.add_dependency "relaton-bipm", "~> 1.9.0"
|
|
33
|
+
spec.add_dependency "relaton-bsi", "~> 1.9.0"
|
|
34
|
+
spec.add_dependency "relaton-calconnect", "~> 1.9.0"
|
|
35
|
+
spec.add_dependency "relaton-cen", "~> 1.9.0"
|
|
36
|
+
spec.add_dependency "relaton-cie", "~> 1.9.0"
|
|
37
|
+
spec.add_dependency "relaton-ecma", "~> 1.9.0"
|
|
38
|
+
spec.add_dependency "relaton-gb", "~> 1.9.0"
|
|
39
|
+
spec.add_dependency "relaton-iec", "~> 1.9.0"
|
|
40
|
+
spec.add_dependency "relaton-ieee", "~> 1.9.0"
|
|
41
|
+
spec.add_dependency "relaton-ietf", "~> 1.9.0"
|
|
42
|
+
spec.add_dependency "relaton-iho", "~> 1.9.0"
|
|
43
|
+
spec.add_dependency "relaton-iso", "~> 1.9.0"
|
|
44
|
+
spec.add_dependency "relaton-itu", "~> 1.9.0"
|
|
45
|
+
spec.add_dependency "relaton-nist", ">= 1.9.2"
|
|
46
|
+
spec.add_dependency "relaton-ogc", "~> 1.9.0"
|
|
47
|
+
spec.add_dependency "relaton-omg", "~> 1.9.0"
|
|
48
|
+
spec.add_dependency "relaton-un", "~> 1.9.0"
|
|
49
|
+
spec.add_dependency "relaton-w3c", "~> 1.9.0"
|
|
50
50
|
|
|
51
51
|
spec.add_development_dependency "byebug", "~> 11.0"
|
|
52
|
-
# spec.add_development_dependency "debase"
|
|
53
52
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
|
54
53
|
spec.add_development_dependency "guard", "~> 2.14"
|
|
55
54
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
|
56
55
|
spec.add_development_dependency "pry-byebug", "~> 3.9.0"
|
|
57
56
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
58
57
|
spec.add_development_dependency "rspec", "~> 3.6"
|
|
59
|
-
spec.add_development_dependency "rubocop", "
|
|
60
|
-
|
|
58
|
+
spec.add_development_dependency "rubocop", "~> 1.17.0"
|
|
59
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.11.0"
|
|
60
|
+
spec.add_development_dependency "rubocop-rails", "~> 2.10.0"
|
|
61
61
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
|
62
62
|
spec.add_development_dependency "timecop", "~> 0.9"
|
|
63
63
|
spec.add_development_dependency "vcr", "~> 5"
|
data/spec/relaton/db_spec.rb
CHANGED
|
@@ -163,14 +163,16 @@ RSpec.describe Relaton::Db do
|
|
|
163
163
|
results = []
|
|
164
164
|
VCR.use_cassette "async_fetch", match_requests_on: %i[method uri body] do
|
|
165
165
|
refs.each do |ref|
|
|
166
|
-
db.fetch_async(ref)
|
|
166
|
+
db.fetch_async(ref, ref: ref) do |r, otherargs|
|
|
167
|
+
queue << [r, otherargs[:ref]]
|
|
168
|
+
end
|
|
167
169
|
end
|
|
168
170
|
Timeout.timeout(60) do
|
|
169
171
|
refs.size.times { results << queue.pop }
|
|
170
172
|
end
|
|
171
173
|
end
|
|
172
174
|
results.each do |result|
|
|
173
|
-
expect(result).to be_instance_of RelatonItu::ItuBibliographicItem
|
|
175
|
+
expect(result[0]).to be_instance_of RelatonItu::ItuBibliographicItem
|
|
174
176
|
end
|
|
175
177
|
end
|
|
176
178
|
|
|
@@ -16,6 +16,10 @@ RSpec.describe Relaton::Processor do
|
|
|
16
16
|
expect { subject.get "code", nil, {} }.to raise_error StandardError
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
it "fetch_data method should be implemented" do
|
|
20
|
+
expect { subject.fetch_data "cource", {} }.to raise_error StandardError
|
|
21
|
+
end
|
|
22
|
+
|
|
19
23
|
it "from_xml method should be implemented" do
|
|
20
24
|
expect { subject.from_xml "" }.to raise_error StandardError
|
|
21
25
|
end
|
|
@@ -79,5 +79,19 @@ RSpec.describe Relaton::Registry do
|
|
|
79
79
|
it "CIE" do
|
|
80
80
|
expect(Relaton::Registry.instance.by_type("CIE")).to be_instance_of RelatonCie::Processor
|
|
81
81
|
end
|
|
82
|
+
|
|
83
|
+
it "BSI" do
|
|
84
|
+
expect(Relaton::Registry.instance.by_type("BSI")).to be_instance_of RelatonBsi::Processor
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "CEN" do
|
|
88
|
+
expect(Relaton::Registry.instance.by_type("CEN")).to be_instance_of RelatonCen::Processor
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "find processot by dataset" do
|
|
93
|
+
expect(Relaton::Registry.instance
|
|
94
|
+
.find_processor_by_dataset("nist-tech-pubs"))
|
|
95
|
+
.to be_instance_of RelatonNist::Processor
|
|
82
96
|
end
|
|
83
97
|
end
|
data/spec/relaton_spec.rb
CHANGED
|
@@ -15,15 +15,15 @@ RSpec.describe Relaton::Db do
|
|
|
15
15
|
VCR.use_cassette "iso_19115_1" do
|
|
16
16
|
bib = @db.fetch("ISO 19115-1", nil, {})
|
|
17
17
|
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
|
18
|
-
expect(bib.to_xml(bibdata: true)).to include "<project-number>"\
|
|
18
|
+
expect(bib.to_xml(bibdata: true)).to include "<project-number part=\"1\">"\
|
|
19
19
|
"ISO 19115</project-number>"
|
|
20
20
|
expect(File.exist?("testcache")).to be true
|
|
21
21
|
expect(File.exist?("testcache2")).to be true
|
|
22
22
|
testcache = Relaton::DbCache.new "testcache"
|
|
23
|
-
expect(testcache["ISO(ISO 19115-1)"]).to include "<project-number>"\
|
|
23
|
+
expect(testcache["ISO(ISO 19115-1)"]).to include "<project-number part=\"1\">"\
|
|
24
24
|
"ISO 19115</project-number>"
|
|
25
25
|
testcache = Relaton::DbCache.new "testcache2"
|
|
26
|
-
expect(testcache["ISO(ISO 19115-1)"]).to include "<project-number>"\
|
|
26
|
+
expect(testcache["ISO(ISO 19115-1)"]).to include "<project-number part=\"1\">"\
|
|
27
27
|
"ISO 19115</project-number>"
|
|
28
28
|
end
|
|
29
29
|
bib = @db.fetch("ISO 19115-1", nil, {})
|
|
@@ -31,7 +31,7 @@ RSpec.describe Relaton::Db do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "with year in code" do
|
|
34
|
-
VCR.use_cassette "
|
|
34
|
+
VCR.use_cassette "iso_19133_2005" do
|
|
35
35
|
bib = @db.fetch("ISO 19133:2005")
|
|
36
36
|
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
|
37
37
|
expect(bib.to_xml).to include '<bibitem id="ISO19133-2005" '\
|
|
@@ -45,24 +45,24 @@ RSpec.describe Relaton::Db do
|
|
|
45
45
|
|
|
46
46
|
context "all parts" do
|
|
47
47
|
it "implicity" do
|
|
48
|
-
VCR.use_cassette "
|
|
49
|
-
bib = @db.fetch("ISO 19115", nil,
|
|
48
|
+
VCR.use_cassette "iso_19115_all_parts" do
|
|
49
|
+
bib = @db.fetch("ISO 19115", nil, all_parts: true)
|
|
50
50
|
expect(bib.docidentifier[0].id).to eq "ISO 19115 (all parts)"
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
it "explicity" do
|
|
55
|
-
VCR.use_cassette "
|
|
56
|
-
bib = @db.fetch("ISO 19115 (all parts)"
|
|
55
|
+
VCR.use_cassette "iso_19115_all_parts" do
|
|
56
|
+
bib = @db.fetch("ISO 19115 (all parts)")
|
|
57
57
|
expect(bib.docidentifier[0].id).to eq "ISO 19115 (all parts)"
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
it "gets sn ISO/
|
|
63
|
-
VCR.use_cassette "
|
|
64
|
-
bib = @db.fetch "ISO/
|
|
65
|
-
expect(bib).
|
|
62
|
+
it "gets sn ISO/CD reference" do
|
|
63
|
+
VCR.use_cassette "iso_cd_14093" do
|
|
64
|
+
bib = @db.fetch "ISO/CD 14093"
|
|
65
|
+
expect(bib.docidentifier[0].id).to eq "ISO/CD 14093"
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -204,6 +204,13 @@ RSpec.describe Relaton::Db do
|
|
|
204
204
|
end
|
|
205
205
|
|
|
206
206
|
it "get OGC refrence and cache it" do
|
|
207
|
+
cc_fr = /\.relaton\/ogc\/bibliography\.json/
|
|
208
|
+
allow(File).to receive(:exist?).with(cc_fr).and_return false
|
|
209
|
+
allow(File).to receive(:exist?).with(/etag\.txt/).and_return false
|
|
210
|
+
expect(File).to receive(:exist?).and_call_original.at_least :once
|
|
211
|
+
expect(File).to receive(:write).with(cc_fr, kind_of(String), kind_of(Hash))
|
|
212
|
+
.at_most :once
|
|
213
|
+
allow(File).to receive(:write).and_call_original
|
|
207
214
|
VCR.use_cassette "ogc_19_025r1" do
|
|
208
215
|
bib = @db.fetch "OGC 19-025r1", nil, {}
|
|
209
216
|
expect(bib).to be_instance_of RelatonOgc::OgcBibliographicItem
|
|
@@ -285,6 +292,13 @@ RSpec.describe Relaton::Db do
|
|
|
285
292
|
end
|
|
286
293
|
end
|
|
287
294
|
|
|
295
|
+
it "get CEN reference" do
|
|
296
|
+
VCR.use_cassette "cen_en_10160_1999" do
|
|
297
|
+
bib = @db.fetch "CEN EN 10160:1999"
|
|
298
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
|
299
|
+
end
|
|
300
|
+
end
|
|
301
|
+
|
|
288
302
|
context "get combined documents" do
|
|
289
303
|
context "ISO" do
|
|
290
304
|
it "included" do
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://api.relaton.org/api/v1/document?code=ISO%2019115-2&year=2019
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
Accept-Encoding:
|
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
12
|
+
Accept:
|
|
13
|
+
- "*/*"
|
|
14
|
+
User-Agent:
|
|
15
|
+
- Ruby
|
|
16
|
+
Host:
|
|
17
|
+
- api.relaton.org
|
|
18
|
+
response:
|
|
19
|
+
status:
|
|
20
|
+
code: 200
|
|
21
|
+
message: OK
|
|
22
|
+
headers:
|
|
23
|
+
Content-Type:
|
|
24
|
+
- text/xml
|
|
25
|
+
Content-Length:
|
|
26
|
+
- '2963'
|
|
27
|
+
Connection:
|
|
28
|
+
- keep-alive
|
|
29
|
+
Date:
|
|
30
|
+
- Mon, 23 Aug 2021 12:02:12 GMT
|
|
31
|
+
X-Amzn-Requestid:
|
|
32
|
+
- '098ad305-defa-47c8-ab52-48343ab03fa8'
|
|
33
|
+
Access-Control-Allow-Origin:
|
|
34
|
+
- "*"
|
|
35
|
+
Access-Control-Allow-Headers:
|
|
36
|
+
- Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
|
|
37
|
+
X-Amz-Apigw-Id:
|
|
38
|
+
- EhMocHeAoAMFtlg=
|
|
39
|
+
Access-Control-Allow-Methods:
|
|
40
|
+
- GET, POST, OPTIONS
|
|
41
|
+
X-Amzn-Trace-Id:
|
|
42
|
+
- Root=1-61238e35-5a78c6585f0a12aa03ef6ad2;Sampled=0
|
|
43
|
+
X-Cache:
|
|
44
|
+
- Miss from cloudfront
|
|
45
|
+
Via:
|
|
46
|
+
- 1.1 a65cc3f0f56427b7099c895c026d63f0.cloudfront.net (CloudFront)
|
|
47
|
+
X-Amz-Cf-Pop:
|
|
48
|
+
- ZAG50-C1
|
|
49
|
+
X-Amz-Cf-Id:
|
|
50
|
+
- AQ2ZtJn4PYqRprdqa7s-risSYgyC2fp3TfB26w8gi7l_4N7BHW252w==
|
|
51
|
+
body:
|
|
52
|
+
encoding: ASCII-8BIT
|
|
53
|
+
string: !binary |-
|
|
54
|
+
PGJpYmRhdGEgdHlwZT0ic3RhbmRhcmQiPgogIDxmZXRjaGVkPjIwMjEtMDctMTE8L2ZldGNoZWQ+CiAgPHRpdGxlIHR5cGU9InRpdGxlLWludHJvIiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJlbiIgc2NyaXB0PSJMYXRuIj5HZW9ncmFwaGljIGluZm9ybWF0aW9uPC90aXRsZT4KICA8dGl0bGUgdHlwZT0idGl0bGUtbWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZW4iIHNjcmlwdD0iTGF0biI+TWV0YWRhdGE8L3RpdGxlPgogIDx0aXRsZSB0eXBlPSJ0aXRsZS1wYXJ0IiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJlbiIgc2NyaXB0PSJMYXRuIj5QYXJ0IDI6IEV4dGVuc2lvbnMgZm9yIGFjcXVpc2l0aW9uIGFuZCBwcm9jZXNzaW5nPC90aXRsZT4KICA8dGl0bGUgdHlwZT0ibWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZW4iIHNjcmlwdD0iTGF0biI+R2VvZ3JhcGhpYyBpbmZvcm1hdGlvbiAtIE1ldGFkYXRhIC0gUGFydCAyOiBFeHRlbnNpb25zIGZvciBhY3F1aXNpdGlvbiBhbmQgcHJvY2Vzc2luZzwvdGl0bGU+CiAgPHRpdGxlIHR5cGU9InRpdGxlLWludHJvIiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJmciIgc2NyaXB0PSJMYXRuIj5JbmZvcm1hdGlvbiBnw6lvZ3JhcGhpcXVlPC90aXRsZT4KICA8dGl0bGUgdHlwZT0idGl0bGUtbWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZnIiIHNjcmlwdD0iTGF0biI+TcOpdGFkb25uw6llczwvdGl0bGU+CiAgPHRpdGxlIHR5cGU9InRpdGxlLXBhcnQiIGZvcm1hdD0idGV4dC9wbGFpbiIgbGFuZ3VhZ2U9ImZyIiBzY3JpcHQ9IkxhdG4iPlBhcnRpZSAyOiBFeHRlbnNpb25zIHBvdXIgbCdhY3F1aXNpdGlvbiBldCBsZSB0cmFpdGVtZW50PC90aXRsZT4KICA8dGl0bGUgdHlwZT0ibWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZnIiIHNjcmlwdD0iTGF0biI+SW5mb3JtYXRpb24gZ8Opb2dyYXBoaXF1ZSAtIE3DqXRhZG9ubsOpZXMgLSBQYXJ0aWUgMjogRXh0ZW5zaW9ucyBwb3VyIGwnYWNxdWlzaXRpb24gZXQgbGUgdHJhaXRlbWVudDwvdGl0bGU+CiAgPHVyaSB0eXBlPSJzcmMiPmh0dHBzOi8vd3d3Lmlzby5vcmcvc3RhbmRhcmQvNjcwMzkuaHRtbDwvdXJpPgogIDx1cmkgdHlwZT0ib2JwIj5odHRwczovL3d3dy5pc28ub3JnL29icC91aS8jIWlzbzpzdGQ6NjcwMzk6ZW48L3VyaT4KICA8dXJpIHR5cGU9InJzcyI+aHR0cHM6Ly93d3cuaXNvLm9yZy9jb250ZW50cy9kYXRhL3N0YW5kYXJkLzA2LzcwLzY3MDM5LmRldGFpbC5yc3M8L3VyaT4KICA8ZG9jaWRlbnRpZmllciB0eXBlPSJJU08iPklTTyAxOTExNS0yOjIwMTk8L2RvY2lkZW50aWZpZXI+CiAgPGRvY2lkZW50aWZpZXIgdHlwZT0iVVJOIj51cm46aXNvOnN0ZDppc286MTkxMTU6LTI6c3RhZ2UtNjAuNjA6ZWQtMjplbixmcjwvZG9jaWRlbnRpZmllcj4KICA8ZG9jbnVtYmVyPjE5MTE1PC9kb2NudW1iZXI+CiAgPGRhdGUgdHlwZT0icHVibGlzaGVkIj4KICAgIDxvbj4yMDE5LTAxPC9vbj4KICA8L2RhdGU+CiAgPGNvbnRyaWJ1dG9yPgogICAgPHJvbGUgdHlwZT0icHVibGlzaGVyIi8+CiAgICA8b3JnYW5pemF0aW9uPgogICAgICA8bmFtZT5JbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uPC9uYW1lPgogICAgICA8YWJicmV2aWF0aW9uPklTTzwvYWJicmV2aWF0aW9uPgogICAgICA8dXJpPnd3dy5pc28ub3JnPC91cmk+CiAgICA8L29yZ2FuaXphdGlvbj4KICA8L2NvbnRyaWJ1dG9yPgogIDxlZGl0aW9uPjI8L2VkaXRpb24+CiAgPGxhbmd1YWdlPmVuPC9sYW5ndWFnZT4KICA8bGFuZ3VhZ2U+ZnI8L2xhbmd1YWdlPgogIDxzY3JpcHQ+TGF0bjwvc2NyaXB0PgogIDxzdGF0dXM+CiAgICA8c3RhZ2U+NjA8L3N0YWdlPgogICAgPHN1YnN0YWdlPjYwPC9zdWJzdGFnZT4KICA8L3N0YXR1cz4KICA8Y29weXJpZ2h0PgogICAgPGZyb20+MjAxOTwvZnJvbT4KICAgIDxvd25lcj4KICAgICAgPG9yZ2FuaXphdGlvbj4KICAgICAgICA8bmFtZT5JU088L25hbWU+CiAgICAgIDwvb3JnYW5pemF0aW9uPgogICAgPC9vd25lcj4KICA8L2NvcHlyaWdodD4KICA8cmVsYXRpb24gdHlwZT0ib2Jzb2xldGVzIj4KICAgIDxiaWJpdGVtIHR5cGU9InN0YW5kYXJkIj4KICAgICAgPGZvcm1hdHRlZHJlZiBmb3JtYXQ9InRleHQvcGxhaW4iPklTTyAxOTExNS0yOjIwMDk8L2Zvcm1hdHRlZHJlZj4KICAgIDwvYmliaXRlbT4KICA8L3JlbGF0aW9uPgogIDxyZWxhdGlvbiB0eXBlPSJ1cGRhdGVzIj4KICAgIDxiaWJpdGVtIHR5cGU9InN0YW5kYXJkIj4KICAgICAgPGZvcm1hdHRlZHJlZiBmb3JtYXQ9InRleHQvcGxhaW4iPklTTyAxOTExNS0yOjIwMTkvUFJGIEFtZCAxPC9mb3JtYXR0ZWRyZWY+CiAgICAgIDxkYXRlIHR5cGU9ImNpcmN1bGF0ZWQiPgogICAgICAgIDxvbj4yMDE5LTAxLTEwPC9vbj4KICAgICAgPC9kYXRlPgogICAgPC9iaWJpdGVtPgogIDwvcmVsYXRpb24+CiAgPHBsYWNlPkdlbmV2YTwvcGxhY2U+CiAgPGV4dD4KICAgIDxkb2N0eXBlPmludGVybmF0aW9uYWwtc3RhbmRhcmQ8L2RvY3R5cGU+CiAgICA8ZWRpdG9yaWFsZ3JvdXA+CiAgICAgIDx0ZWNobmljYWwtY29tbWl0dGVlIG51bWJlcj0iMjExIiB0eXBlPSJUQyI+SVNPL1RDIDIxMUdlb2dyYXBoaWMgaW5mb3JtYXRpb24vR2VvbWF0aWNzPC90ZWNobmljYWwtY29tbWl0dGVlPgogICAgPC9lZGl0b3JpYWxncm91cD4KICAgIDxpY3M+CiAgICAgIDxjb2RlPjM1LjI0MC43MDwvY29kZT4KICAgICAgPHRleHQ+SVQgYXBwbGljYXRpb25zIGluIHNjaWVuY2U8L3RleHQ+CiAgICA8L2ljcz4KICAgIDxzdHJ1Y3R1cmVkaWRlbnRpZmllciB0eXBlPSJJU08iPgogICAgICA8cHJvamVjdC1udW1iZXI+SVNPIDE5MTE1PC9wcm9qZWN0LW51bWJlcj4KICAgIDwvc3RydWN0dXJlZGlkZW50aWZpZXI+CiAgPC9leHQ+CjwvYmliZGF0YT4=
|
|
55
|
+
http_version:
|
|
56
|
+
recorded_at: Mon, 23 Aug 2021 12:02:12 GMT
|
|
57
|
+
recorded_with: VCR 5.1.0
|