bolognese 0.9.27 → 0.9.28
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bolognese/metadata.rb +2 -2
- data/lib/bolognese/readers/codemeta_reader.rb +1 -1
- data/lib/bolognese/readers/crossref_reader.rb +1 -1
- data/lib/bolognese/readers/datacite_reader.rb +3 -3
- data/lib/bolognese/readers/schema_org_reader.rb +1 -1
- data/lib/bolognese/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_test_system.yml +107 -0
- data/spec/readers/datacite_reader_spec.rb +22 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0c56ee5d9e7e6c6b05cf7dc7fa782bc332aaac1
|
4
|
+
data.tar.gz: a49d7460ee9d3fba26acc953df4e7a9d8c053a32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82bf48a194cdd0d9bc38cdb5e530ac8482a64ff0aae041274577555211e2444887a426dcb198a76efe3896098cb8130265f280c67a358023c3497fa71c84c3c7
|
7
|
+
data.tar.gz: a38601783170cc7d9782dbfea068297f04288b8866511bfdbec151156a434d40cf44e07ab744c7d8b61b1c84e4509600aa7650b43beba13dedef845aabcd230e
|
data/Gemfile.lock
CHANGED
data/lib/bolognese/metadata.rb
CHANGED
@@ -72,14 +72,14 @@ module Bolognese
|
|
72
72
|
:related_identifier, :reverse, :citeproc_type, :ris_type, :volume, :issue,
|
73
73
|
:name_detector
|
74
74
|
|
75
|
-
def initialize(input: nil, from: nil, regenerate: false)
|
75
|
+
def initialize(input: nil, from: nil, regenerate: false, **options)
|
76
76
|
id = normalize_id(input)
|
77
77
|
|
78
78
|
if id.present?
|
79
79
|
@from = from || find_from_format(id: id)
|
80
80
|
|
81
81
|
# generate name for method to call dynamically
|
82
|
-
string = @from.present? ? send("get_" + @from, id: id) : nil
|
82
|
+
string = @from.present? ? send("get_" + @from, id: id, search_url: options[:search_url]) : nil
|
83
83
|
elsif File.exist?(input)
|
84
84
|
ext = File.extname(input)
|
85
85
|
if %w(.bib .ris .xml .json).include?(ext)
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Bolognese
|
2
2
|
module Readers
|
3
3
|
module DataciteReader
|
4
|
-
def get_datacite(id: nil)
|
4
|
+
def get_datacite(id: nil, **options)
|
5
5
|
return nil unless id.present?
|
6
6
|
|
7
7
|
doi = doi_from_url(id)
|
8
|
-
url =
|
9
|
-
url += "
|
8
|
+
url = options.fetch(:search_url, nil).presence || "https://search.datacite.org/api"
|
9
|
+
url += "?q=doi:#{doi}&fl=doi,xml,media,minted,updated&wt=json"
|
10
10
|
|
11
11
|
response = Maremma.get url
|
12
12
|
attributes = response.body.dig("data", "response", "docs").first
|
data/lib/bolognese/version.rb
CHANGED
data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_test_system.yml
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.datacite.org/prefixes/10.5286
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Maremma - https://github.com/datacite/maremma
|
12
|
+
Accept:
|
13
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Access-Control-Allow-Headers:
|
20
|
+
- Content-Type,Accept,Accept-Encoding,Origin,User-Agent,Cache-Control,Keep-Alive
|
21
|
+
Access-Control-Allow-Methods:
|
22
|
+
- GET, POST, OPTIONS
|
23
|
+
Access-Control-Allow-Origin:
|
24
|
+
- "*"
|
25
|
+
Access-Control-Max-Age:
|
26
|
+
- '1728000'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=0, private, must-revalidate
|
29
|
+
Content-Type:
|
30
|
+
- application/vnd.api+json; charset=utf-8
|
31
|
+
Date:
|
32
|
+
- Sun, 25 Jun 2017 12:45:30 GMT
|
33
|
+
Etag:
|
34
|
+
- W/"be181a297e99f2daa28e8ee93e167f12"
|
35
|
+
Server:
|
36
|
+
- openresty/1.11.2.2
|
37
|
+
Status:
|
38
|
+
- 200 OK
|
39
|
+
Vary:
|
40
|
+
- Accept-Encoding
|
41
|
+
Via:
|
42
|
+
- kong/0.10.3
|
43
|
+
X-Content-Type-Options:
|
44
|
+
- nosniff
|
45
|
+
X-Frame-Options:
|
46
|
+
- SAMEORIGIN
|
47
|
+
X-Kong-Proxy-Latency:
|
48
|
+
- '1'
|
49
|
+
X-Kong-Upstream-Latency:
|
50
|
+
- '332'
|
51
|
+
X-Powered-By:
|
52
|
+
- Phusion Passenger 5.1.5
|
53
|
+
X-Ratelimit-Limit-Hour:
|
54
|
+
- '100000'
|
55
|
+
X-Ratelimit-Remaining-Hour:
|
56
|
+
- '99994'
|
57
|
+
X-Request-Id:
|
58
|
+
- e779f0c8-de88-4f60-aeee-6d3315faefd2
|
59
|
+
X-Runtime:
|
60
|
+
- '0.330449'
|
61
|
+
X-Xss-Protection:
|
62
|
+
- 1; mode=block
|
63
|
+
Content-Length:
|
64
|
+
- '124'
|
65
|
+
Connection:
|
66
|
+
- keep-alive
|
67
|
+
body:
|
68
|
+
encoding: UTF-8
|
69
|
+
string: '{"data":{"id":"10.5286","type":"prefixes","attributes":{"registration-agency":"DataCite","updated":"2016-09-21T20:27:14Z"}}}'
|
70
|
+
http_version:
|
71
|
+
recorded_at: Sun, 25 Jun 2017 12:45:30 GMT
|
72
|
+
- request:
|
73
|
+
method: get
|
74
|
+
uri: https://search.test.datacite.org/api?fl=doi,xml,media,minted,updated&q=doi:10.5286/topcat/isis/1/datacollection/84974338&wt=json
|
75
|
+
body:
|
76
|
+
encoding: US-ASCII
|
77
|
+
string: ''
|
78
|
+
headers:
|
79
|
+
User-Agent:
|
80
|
+
- Maremma - https://github.com/datacite/maremma
|
81
|
+
Accept:
|
82
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
83
|
+
response:
|
84
|
+
status:
|
85
|
+
code: 200
|
86
|
+
message: ''
|
87
|
+
headers:
|
88
|
+
Access-Control-Allow-Methods:
|
89
|
+
- GET, POST, OPTIONS
|
90
|
+
Access-Control-Allow-Origin:
|
91
|
+
- "*"
|
92
|
+
Content-Type:
|
93
|
+
- application/json;charset=UTF-8
|
94
|
+
Date:
|
95
|
+
- Sun, 25 Jun 2017 12:45:30 GMT
|
96
|
+
Server:
|
97
|
+
- openresty/1.11.2.2
|
98
|
+
Connection:
|
99
|
+
- keep-alive
|
100
|
+
body:
|
101
|
+
encoding: UTF-8
|
102
|
+
string: '{"responseHeader":{"status":0,"QTime":1},"response":{"numFound":1,"start":0,"docs":[{"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHJlc291cmNlIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+PGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4Ni90b3BjYXQvaXNpcy8xL0RhdGFDb2xsZWN0aW9uLzg0OTc0MzM4PC9pZGVudGlmaWVyPjx0aXRsZXM+PHRpdGxlIHhtbDpsYW5nPSJlbi1nYiI+RXhwbG9yaW5nIHRoZSBwb3RlbnRpYWwgb2YgZW5lcmd5LWRlcGVuZGVudCBuZXV0cm9uIGltYWdpbmcgPC90aXRsZT48L3RpdGxlcz48ZGVzY3JpcHRpb25zPjxkZXNjcmlwdGlvbiBkZXNjcmlwdGlvblR5cGU9IkFic3RyYWN0IiB4bWw6bGFuZz0iZW4tZ2IiPldlIHdvdWxkIGxpa2UgdG8gZXhwbG9yZSB0aGUgcG90ZW50aWFsIG9mIGVuZXJneS1kZXBlbmRlbnQgbmV1dHJvbiBpbWFnaW5nLCBpbiB2aWV3IG9mIHRoZSBmdXR1cmUgQnJhZ2cgZWRnZSB0cmFuc21pc3Npb24gYW5hbHlzaXMgb3B0aW9ucyBvbiBJTUFUIGFuZCBMQVJNT1IuIFRoZSBleHBlcmltZW50cyB3aWxsIHVzZSB0aGUgbGF0ZXN0IG5ldXRyb24gc2Vuc2l0aXZlIG1pY3JvY2hhbm5lbCBwbGF0ZSAoTUNQKSBkZXRlY3Rpb24gc3lzdGVtLCBjaGFyYWN0ZXJpemUgaXRzIHBlcmZvcm1hbmNlIG9uIGEgVFMtMiBuZXV0cm9uIGJlYW0gYW5kIHByb2R1Y2UgZGF0YSBzZXRzIGZvciBkZXZlbG9waW5nIGRhdGEgcHJvY2Vzc2luZyBhbmQgY29ycmVjdGlvbnMgcHJvY2VkdXJlcyBmb3IgZW5lcmd5LXJlc29sdmVkIG5ldXRyb24gcmFkaW9ncmFwaHkgYW5kIHRvbW9ncmFwaHkuIERhdGEgc2V0cyB3aWxsIGJlIGNvbGxlY3RlZCBvbiBhIHJhbmdlIG9mIHN0YW5kYXJkIHNhbXBsZXMgYW5kIGVuZ2luZWVyaW5nIGFsbG95cyBvZiB2YXJ5aW5nIGNvbXBvc2l0aW9uIGFuZCBnZW9tZXRyeSwgdG8gdmVyaWZ5IHRoZSB1c2VmdWxuZXNzIG9mIG5ldXRyb24gaW1hZ2luZyBmb3IgcGhhc2UsIGdyYWluIGFuZCBzdHJhaW4gbWFwcGluZyBpbiBlbmdpbmVlcmluZyBhbGxveXMuIFdlIGFzayBmb3IgYSB0b3RhbCBvZiAxMiBkYXlzIG9uIExBUk1PUi48L2Rlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb25zPjxjcmVhdG9ycz48Y3JlYXRvcj48Y3JlYXRvck5hbWU+RHIgV2luZnJpZWQgS29ja2VsbWFubjwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjxjcmVhdG9yPjxjcmVhdG9yTmFtZT5EciBSb2JlcnQgRGFsZ2xpZXNoPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JOYW1lPkRyIFRyaWVzdGlubyBNaW5uaXRpPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JOYW1lPlByb2Zlc3NvciBLZW5pY2hpIFdhdGFuYWJlPC9jcmVhdG9yTmFtZT48L2NyZWF0b3I+PGNyZWF0b3I+PGNyZWF0b3JOYW1lPk1yIFJhbmdnaSBSYW1hZGhhbjwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjxjcmVhdG9yPjxjcmVhdG9yTmFtZT5NciBUb20gR293bGFuZDwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjwvY3JlYXRvcnM+PGRhdGVzPjxkYXRlIGRhdGVUeXBlPSJBdmFpbGFibGUiPjIwMTctMDYtMjM8L2RhdGU+PC9kYXRlcz48cHVibGlzaGVyPklTSVM8L3B1Ymxpc2hlcj48cHVibGljYXRpb25ZZWFyPjIwMTc8L3B1YmxpY2F0aW9uWWVhcj48cmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUdlbmVyYWw9IkRhdGFzZXQiPkV4cGVyaW1lbnQgRGF0YTwvcmVzb3VyY2VUeXBlPjxyaWdodHNMaXN0PjxyaWdodHMgcmlnaHRzVVJJPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvIj5DcmVhdGl2ZSBDb21tb25zIC0gQXR0cmlidXRpb24gNC4wIEludGVybmF0aW9uYWw8L3JpZ2h0cz48L3JpZ2h0c0xpc3Q+PC9yZXNvdXJjZT4=","minted":"2017-06-23T14:30:35Z","updated":"2017-06-23T14:30:35Z","doi":"10.5286/TOPCAT/ISIS/1/DATACOLLECTION/84974338"}]}}
|
103
|
+
|
104
|
+
'
|
105
|
+
http_version:
|
106
|
+
recorded_at: Sun, 25 Jun 2017 12:45:30 GMT
|
107
|
+
recorded_with: VCR 3.0.3
|
@@ -259,6 +259,28 @@ describe Bolognese::Metadata, vcr: true do
|
|
259
259
|
expect(subject.valid?).to be false
|
260
260
|
end
|
261
261
|
|
262
|
+
it "DOI in test system" do
|
263
|
+
input = "https://doi.org/10.5286/TOPCAT/ISIS/1/DATACOLLECTION/84974338"
|
264
|
+
search_url = "https://search.test.datacite.org/api"
|
265
|
+
subject = Bolognese::Metadata.new(input: input, search_url: search_url)
|
266
|
+
expect(subject.valid?).to be true
|
267
|
+
expect(subject.id).to eq("https://doi.org/10.5286/topcat/isis/1/datacollection/84974338")
|
268
|
+
expect(subject.type).to eq("Dataset")
|
269
|
+
expect(subject.additional_type).to eq("Experiment Data")
|
270
|
+
expect(subject.resource_type_general).to eq("Dataset")
|
271
|
+
expect(subject.author).to eq([{"name"=>"Dr Winfried Kockelmann"},
|
272
|
+
{"name"=>"Dr Robert Dalgliesh"},
|
273
|
+
{"name"=>"Dr Triestino Minniti"},
|
274
|
+
{"name"=>"Professor Kenichi Watanabe"},
|
275
|
+
{"name"=>"Mr Ranggi Ramadhan"},
|
276
|
+
{"name"=>"Mr Tom Gowland"}])
|
277
|
+
expect(subject.title["text"]).to eq("Exploring the potential of energy-dependent neutron imaging")
|
278
|
+
expect(subject.date_published).to eq("2017")
|
279
|
+
expect(subject.publisher).to eq("ISIS")
|
280
|
+
expect(subject.provider).to eq("DataCite")
|
281
|
+
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
|
282
|
+
end
|
283
|
+
|
262
284
|
# it "missing creator" do
|
263
285
|
# string = IO.read(fixture_path + "datacite_missing_creator.xml")
|
264
286
|
# subject = Bolognese::Metadata.new(string: string, regenerate: true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bolognese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
@@ -590,6 +590,7 @@ files:
|
|
590
590
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml
|
591
591
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml
|
592
592
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/BlogPosting.yml
|
593
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_test_system.yml
|
593
594
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_not_found.yml
|
594
595
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Dataset.yml
|
595
596
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Funding.yml
|