bolognese 0.9.17 → 0.9.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CITATION +17 -0
- data/Gemfile.lock +5 -5
- data/lib/bolognese/datacite_utils.rb +2 -2
- data/lib/bolognese/metadata.rb +5 -5
- data/lib/bolognese/readers/crossref_reader.rb +32 -4
- data/lib/bolognese/readers/datacite_reader.rb +23 -5
- data/lib/bolognese/version.rb +1 -1
- data/lib/bolognese/writers/crosscite_writer.rb +1 -1
- data/lib/bolognese/writers/datacite_json_writer.rb +1 -1
- data/lib/bolognese/writers/schema_org_writer.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding.yml +38 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding_OpenAIRE.yml +40 -0
- data/spec/readers/crossref_reader_spec.rb +10 -7
- data/spec/readers/datacite_reader_spec.rb +6 -2
- data/spec/writers/schema_org_writer_spec.rb +32 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1463edb9e56dc1c3519c19a325f248d9e8d134d0
|
4
|
+
data.tar.gz: 44484bf41d55c1539b38f39bf6111bacead7e447
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a981e4ba58d96e9e2e67ae7ce15fd18a951ba3364d06723271d55634e2ccbda9a31bb882c96a9ad1f6ba4489b2537de8f7610f8d2c3dfaa48d7624c98d9fc537
|
7
|
+
data.tar.gz: fbb30ce05de64f05402a8e62b4a8d5617e26f0b7331a53ad3cd1a848fc46293b46d0c2bb35ac072f70fd5196ac1d3b5ccbd45e3a7bf216a78448ec5ad1add403
|
data/CITATION
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
To cite bolognese in publications, please use:
|
2
|
+
|
3
|
+
Fenner, M. (2017). Bolognese: a Ruby library for conversion of DOI Metadata.
|
4
|
+
DataCite. https://doi.org/10.5438/n138-z3mk
|
5
|
+
|
6
|
+
A BibTeX entry for bolognese is
|
7
|
+
|
8
|
+
@misc{https://doi.org/10.5438/n138-z3mk,
|
9
|
+
doi = {10.5438/n138-z3mk},
|
10
|
+
url = {https://github.com/datacite/bolognese},
|
11
|
+
author = {Fenner, Martin},
|
12
|
+
keywords = {doi, metadata, crossref, datacite, schema.org, bibtex, codemeta},
|
13
|
+
title = {Bolognese: a Ruby library for conversion of DOI Metadata},
|
14
|
+
publisher = {DataCite},
|
15
|
+
note = {Ruby gem and command-line utility for conversion of DOI metadata from and to different metadata formats, including schema.org.},
|
16
|
+
year = {2017}
|
17
|
+
}
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bolognese (0.9.
|
4
|
+
bolognese (0.9.18)
|
5
5
|
activesupport (>= 4.2.5, < 6)
|
6
6
|
benchmark_methods (~> 0.7)
|
7
7
|
bibtex-ruby (~> 4.1)
|
@@ -84,11 +84,11 @@ GEM
|
|
84
84
|
nokogiri (~> 1.6, >= 1.6.8)
|
85
85
|
oj (~> 2.18, >= 2.18.1)
|
86
86
|
mini_portile2 (2.1.0)
|
87
|
-
minitest (5.10.
|
87
|
+
minitest (5.10.2)
|
88
88
|
multi_json (1.12.1)
|
89
89
|
multipart-post (2.0.0)
|
90
90
|
namae (0.10.2)
|
91
|
-
nokogiri (1.7.
|
91
|
+
nokogiri (1.7.2)
|
92
92
|
mini_portile2 (~> 2.1.0)
|
93
93
|
oj (2.18.5)
|
94
94
|
postrank-uri (1.0.22)
|
@@ -96,7 +96,7 @@ GEM
|
|
96
96
|
nokogiri (>= 1.6.1, < 1.8)
|
97
97
|
public_suffix (>= 2.0.0, < 2.1)
|
98
98
|
public_suffix (2.0.5)
|
99
|
-
rack (2.0.
|
99
|
+
rack (2.0.2)
|
100
100
|
rack-test (0.6.3)
|
101
101
|
rack (>= 1.0)
|
102
102
|
rake (12.0.0)
|
@@ -105,7 +105,7 @@ GEM
|
|
105
105
|
link_header (~> 0.0, >= 0.0.8)
|
106
106
|
rdf-aggregate-repo (2.2.0)
|
107
107
|
rdf (~> 2.0)
|
108
|
-
rdf-rdfa (2.2.
|
108
|
+
rdf-rdfa (2.2.1)
|
109
109
|
haml (~> 4.0)
|
110
110
|
htmlentities (~> 4.3)
|
111
111
|
rdf (~> 2.2)
|
@@ -130,10 +130,10 @@ module Bolognese
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def insert_funding_references(xml)
|
133
|
-
return xml unless Array.wrap(
|
133
|
+
return xml unless Array.wrap(funding).present?
|
134
134
|
|
135
135
|
xml.fundingReferences do
|
136
|
-
Array.wrap(
|
136
|
+
Array.wrap(funding).each do |funding_reference|
|
137
137
|
xml.fundingReference do
|
138
138
|
insert_funding_reference(xml, funding_reference)
|
139
139
|
end
|
data/lib/bolognese/metadata.rb
CHANGED
@@ -60,7 +60,7 @@ module Bolognese
|
|
60
60
|
attr_reader :id, :from, :raw, :metadata, :doc, :provider, :schema_version, :license, :citation,
|
61
61
|
:additional_type, :alternate_name, :url, :version, :keywords, :editor,
|
62
62
|
:page_start, :page_end, :date_modified, :language, :spatial_coverage,
|
63
|
-
:content_size, :
|
63
|
+
:content_size, :funding, :journal, :bibtex_type, :date_created, :has_part,
|
64
64
|
:publisher, :contributor, :same_as, :is_previous_version_of, :is_new_version_of,
|
65
65
|
:should_passthru, :errors, :datacite_errors, :date_accepted, :date_available,
|
66
66
|
:date_copyrighted, :date_collected, :date_submitted, :date_valid,
|
@@ -168,10 +168,6 @@ module Bolognese
|
|
168
168
|
metadata.fetch("editor", nil)
|
169
169
|
end
|
170
170
|
|
171
|
-
def funder
|
172
|
-
metadata.fetch("funder", nil)
|
173
|
-
end
|
174
|
-
|
175
171
|
def publisher
|
176
172
|
metadata.fetch("publisher", nil)
|
177
173
|
end
|
@@ -252,6 +248,10 @@ module Bolognese
|
|
252
248
|
metadata.fetch("schema_version", nil)
|
253
249
|
end
|
254
250
|
|
251
|
+
def funding
|
252
|
+
metadata.fetch("funding", nil)
|
253
|
+
end
|
254
|
+
|
255
255
|
def is_identical_to
|
256
256
|
metadata.fetch("is_identical_to", nil)
|
257
257
|
end
|
@@ -111,7 +111,7 @@ module Bolognese
|
|
111
111
|
"alternate_name" => crossref_alternate_name(bibliographic_metadata),
|
112
112
|
"author" => crossref_people(bibliographic_metadata, "author"),
|
113
113
|
"editor" => crossref_people(bibliographic_metadata, "editor"),
|
114
|
-
"
|
114
|
+
"funding" => crossref_funding_reference(program_metadata),
|
115
115
|
"publisher" => nil,
|
116
116
|
"provider" => "Crossref",
|
117
117
|
"is_part_of" => crossref_is_part_of(journal_metadata),
|
@@ -168,15 +168,43 @@ module Bolognese
|
|
168
168
|
end.unwrap
|
169
169
|
end
|
170
170
|
|
171
|
-
def
|
171
|
+
def crossref_funding_reference(program_metadata)
|
172
172
|
fundref = Array.wrap(program_metadata).find { |a| a["name"] == "fundref" } || {}
|
173
173
|
Array.wrap(fundref.fetch("assertion", [])).select { |a| a["name"] == "fundgroup" }.map do |f|
|
174
174
|
f = Array.wrap(f.fetch("assertion", nil)).first
|
175
|
-
{ "
|
176
|
-
|
175
|
+
funder = { "type" => "Organization",
|
176
|
+
"id" => normalize_id(f.dig("assertion", "__content__")),
|
177
|
+
"name" => f.dig("__content__").strip }.compact
|
178
|
+
if f["awardNumber"].present? || f["awardTitle"].present?
|
179
|
+
{ "type" => "Award",
|
180
|
+
"name" => f.fetch("awardTitle", nil),
|
181
|
+
"identifier" => f.dig("awardNumber", "__content__"),
|
182
|
+
"url" => f.dig("awardNumber", "awardURI"),
|
183
|
+
"funder" => funder }
|
184
|
+
else
|
185
|
+
funder
|
186
|
+
end
|
177
187
|
end.unwrap
|
178
188
|
end
|
179
189
|
|
190
|
+
# def datacite_funding_reference(meta)
|
191
|
+
# Array.wrap(meta.dig("fundingReferences", "fundingReference")).map do |f|
|
192
|
+
# funder_id = parse_attributes(f["funderIdentifier"])
|
193
|
+
# funder = { "type" => "Organization",
|
194
|
+
# "id" => normalize_id(funder_id),
|
195
|
+
# "name" => f["funderName"] }.compact
|
196
|
+
# if f["awardNumber"].present? || f["awardTitle"].present?
|
197
|
+
# { "type" => "Award",
|
198
|
+
# "name" => f.fetch("awardTitle", nil),
|
199
|
+
# "identifier" => f.dig("awardNumber", "__content__"),
|
200
|
+
# "url" => f.dig("awardNumber", "awardURI"),
|
201
|
+
# "funder" => funder }
|
202
|
+
# else
|
203
|
+
# funder
|
204
|
+
# end
|
205
|
+
# end.uniq
|
206
|
+
# end
|
207
|
+
|
180
208
|
def crossref_date_published(bibliographic_metadata)
|
181
209
|
pub_date = Array.wrap(bibliographic_metadata.fetch("publication_date", nil)).presence ||
|
182
210
|
Array.wrap(bibliographic_metadata.fetch("acceptance_date", nil))
|
@@ -47,7 +47,7 @@ module Bolognese
|
|
47
47
|
end
|
48
48
|
end.compact.join(", ").presence
|
49
49
|
dates = Array.wrap(meta.dig("dates", "date"))
|
50
|
-
|
50
|
+
funding = begin
|
51
51
|
f = datacite_funder_contributor(meta) + datacite_funding_reference(meta)
|
52
52
|
f.length > 1 ? f : f.first
|
53
53
|
end
|
@@ -66,9 +66,9 @@ module Bolognese
|
|
66
66
|
"alternate_name" => alternate_name,
|
67
67
|
"author" => get_authors(meta.dig("creators", "creator")),
|
68
68
|
"editor" => get_authors(Array.wrap(meta.dig("contributors", "contributor")).select { |r| r["contributorType"] == "Editor" }),
|
69
|
-
"funder" => funder,
|
70
69
|
"publisher" => meta.fetch("publisher", nil),
|
71
70
|
"provider" => "DataCite",
|
71
|
+
"funding" => funding,
|
72
72
|
"is_identical_to" => datacite_is_identical_to(meta),
|
73
73
|
"is_part_of" => datacite_is_part_of(meta),
|
74
74
|
"has_part" => datacite_has_part(meta),
|
@@ -103,8 +103,18 @@ module Bolognese
|
|
103
103
|
def datacite_funding_reference(meta)
|
104
104
|
Array.wrap(meta.dig("fundingReferences", "fundingReference")).map do |f|
|
105
105
|
funder_id = parse_attributes(f["funderIdentifier"])
|
106
|
-
{ "
|
107
|
-
|
106
|
+
funder = { "type" => "Organization",
|
107
|
+
"id" => normalize_id(funder_id),
|
108
|
+
"name" => f["funderName"] }.compact
|
109
|
+
if f["awardNumber"].present? || f["awardTitle"].present?
|
110
|
+
{ "type" => "Award",
|
111
|
+
"name" => f.fetch("awardTitle", nil),
|
112
|
+
"identifier" => f.dig("awardNumber", "__content__"),
|
113
|
+
"url" => f.dig("awardNumber", "awardURI"),
|
114
|
+
"funder" => funder }
|
115
|
+
else
|
116
|
+
funder
|
117
|
+
end
|
108
118
|
end.uniq
|
109
119
|
end
|
110
120
|
|
@@ -170,7 +180,15 @@ module Bolognese
|
|
170
180
|
def datacite_funder_contributor(meta)
|
171
181
|
Array.wrap(meta.dig("contributors", "contributor")).reduce([]) do |sum, f|
|
172
182
|
if f["contributorType"] == "Funder"
|
173
|
-
|
183
|
+
funder = { "type" => "Organization",
|
184
|
+
"name" => f["contributorName"] }.compact
|
185
|
+
if f.dig("nameIdentifier", "nameIdentifierScheme") == "info"
|
186
|
+
sum << { "type" => "Award",
|
187
|
+
"identifier" => f.dig("nameIdentifier", "__content__").split("/").last,
|
188
|
+
"funder" => funder }
|
189
|
+
else
|
190
|
+
sum << funder
|
191
|
+
end
|
174
192
|
else
|
175
193
|
sum
|
176
194
|
end
|
data/lib/bolognese/version.rb
CHANGED
@@ -32,7 +32,7 @@ module Bolognese
|
|
32
32
|
"@reverse" => reverse.presence,
|
33
33
|
"schemaVersion" => schema_version,
|
34
34
|
"publisher" => publisher.present? ? { "@type" => "Organization", "name" => publisher } : nil,
|
35
|
-
"
|
35
|
+
"funding" => to_schema_org(funding),
|
36
36
|
"provider" => provider.present? ? { "@type" => "Organization", "name" => provider } : nil
|
37
37
|
}.compact.presence
|
38
38
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://search.datacite.org/api?fl=doi,xml,media,minted,updated&q=doi:10.5438/6423&wt=json
|
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-Methods:
|
20
|
+
- GET, POST, OPTIONS
|
21
|
+
Access-Control-Allow-Origin:
|
22
|
+
- "*"
|
23
|
+
Content-Type:
|
24
|
+
- application/json;charset=UTF-8
|
25
|
+
Date:
|
26
|
+
- Fri, 12 May 2017 10:02:42 GMT
|
27
|
+
Server:
|
28
|
+
- openresty/1.11.2.2
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
body:
|
32
|
+
encoding: UTF-8
|
33
|
+
string: '{"responseHeader":{"status":0,"QTime":1},"response":{"numFound":1,"start":0,"docs":[{"xml":"PHJlc291cmNlIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTQzOC82NDIzPC9pZGVudGlmaWVyPgogIDxjcmVhdG9ycz4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+RmFycXVoYXIsIEFkYW08L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPkFkYW08L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RmFycXVoYXI8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAxLTUzMzEtNjU5MjwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5Ccml0aXNoIExpYnJhcnk8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5BcnlhbmksIEFtaXI8L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPkFtaXI8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+QXJ5YW5pPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi00MjU5LTk3NzQ8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+QU5EUzwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkJyb3duLCBKb3NoPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5Kb3NoPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkJyb3duPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi04Njg5LTQ5MzU8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+T1JDSUQgRVU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5CdXJ0b24sIEFkcmlhbjwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+QWRyaWFuPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkJ1cnRvbjwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDItODA5OS03NTM4PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkFORFM8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5DcnVpc2UsIFBhdHJpY2lhPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5QYXRyaWNpYTwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5DcnVpc2U8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAyLTkzMDAtNTI3ODwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5EYXRhQ2l0ZTwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkRhbGxtZWllci1UaGllc3NlbiwgU8O8bmplPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5Tw7xuamU8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RGFsbG1laWVyLVRoaWVzc2VuPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi02MTM3LTIzNDg8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+Q0VSTjwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkRhcHBlcnQsIEFuZ2VsYTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+QW5nZWxhPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkRhcHBlcnQ8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAzLTI2MTQtNjY3NjwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5Ccml0aXNoIExpYnJhcnk8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5EYXNsZXIsIFJvYmluPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5Sb2JuPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkRhc2xlcjwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDItNDY5NS03ODc0PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkNFUk48L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5EZW1lcmFudmlsbGUsIFRvbTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+VG9tPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkRlbWVyYW52aWxsZTwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDMtMDkwMi00Mzg2PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPk9SQ0lEIEVVPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+RGllcGVuYnJvZWssIE1pY2hhZWw8L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPk1pY2hhZWw8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RGllcGVuYnJvZWs8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAzLTMwOTYtNjgyOTwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5QYW5nYWVhPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+RHVpbmUsIE1hYWlrZTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+TWFpa2U8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RHVpbmU8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAzLTM0MTItNzE5MjwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5PUkNJRCBFVTwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkZlbm5lciwgTWFydGluPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5NYXJ0aW48L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RmVubmVyPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMy0xNDE5LTI0MDU8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+RGF0YUNpdGU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5HYXJ6YSwgS3Jpc3RpYW48L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPktyaXN0aWFuPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkdhcnphPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMy0zNDg0LTY4NzU8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+RGF0YUNpdGU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5Hcm90aCwgUGF1bDwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+UGF1bDwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5Hcm90aDwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDMtMDE4My02OTEwPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkVsc2V2aWVyPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+SGFhaywgTGF1cmVsPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5MYXVyZWw8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+SGFhazwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtNTEwOS0zNzAwPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPk9SQ0lEIEVVPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+S2llcm1lciwgVmVyb25pcXVlPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5WZXJvbmlxdWU8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+S2llcm1lcjwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtODc3MS03MjM5PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPlB1YmxpYyBMaWJyYXJ5IG9mIFNjaWVuY2U8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5Lb3RhcnNraSwgUmFjaGFlbDwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+UmFjaGFlbDwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5Lb3RhcnNraTwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtNjg0My03OTYwPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkJyaXRpc2ggTGlicmFyeTwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPk1hY0NhbGx1bSwgQ2F0cmlvbmE8L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPkNhdHJpb25hPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPk1hY0NhbGx1bTwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtOTYyMy0yMjI1PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPlB1YmxpYyBMaWJyYXJ5IG9mIFNjaWVuY2U8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5NY0VudHlyZSwgSm9oYW5uYTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+Sm9oYW5uYTwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5NY0VudHlyZTwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDItMTYxMS02OTM1PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkV1cm9wZWFuIEJpb2luZm9ybWF0aWNzIEluc3RpdHV0ZTwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPk1lbGUsIFNhbHZhdG9yZTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+U2FsdmF0b3JlPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPk1lbGU8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAzLTA3NjItMjIzNTwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5DRVJOPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+TWVsbG8sIEd1aWxoZXJtZTwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+R3VpbGhlcm1lPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPk1lbGxvPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi05ODI5LTA5MVg8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+RXVyb3BlYW4gQmlvaW5mb3JtYXRpY3MgSW5zdGl0dXRlPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+UnVlZGEsIExhdXJhPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5MYXVyYTwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5SdWVkYTwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtNTk1Mi03NjMwPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPkRhdGFDaXRlPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+U3RvY2tlciwgTWFya3VzPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5NYXJrdXM8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+U3RvY2tlcjwvZmFtaWx5TmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnIj4wMDAwLTAwMDEtNTQ5Mi0zMjEyPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uPlBhbmdhZWE8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5WaXNpb24sIFRvZGQ8L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPlRvZGQ8L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+VmlzaW9uPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmciPjAwMDAtMDAwMi02MTMzLTI1ODE8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24+RHJ5YWQ8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogIDwvY3JlYXRvcnM+CiAgPGNvbnRyaWJ1dG9ycz4KICAgIDxjb250cmlidXRvciBjb250cmlidXRvclR5cGU9IlByb2plY3RMZWFkZXIiPgogICAgICA8Y29udHJpYnV0b3JOYW1lPlRoZSBCcml0aXNoIExpYnJhcnk8L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjM2MjEyLjM0PC9uYW1lSWRlbnRpZmllcj4KICAgIDwvY29udHJpYnV0b3I+CiAgICA8Y29udHJpYnV0b3IgY29udHJpYnV0b3JUeXBlPSJQcm9qZWN0TWVtYmVyIj4KICAgICAgPGNvbnRyaWJ1dG9yTmFtZT5Nb25hc2ggVW5pdmVyc2l0eTwvY29udHJpYnV0b3JOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9IkdSSUQiIHNjaGVtZVVSST0iaHR0cHM6Ly9ncmlkLmFjL2luc3RpdHV0ZXMiPmdyaWQuMTAwMi4zPC9uYW1lSWRlbnRpZmllcj4KICAgIDwvY29udHJpYnV0b3I+CiAgICA8Y29udHJpYnV0b3IgY29udHJpYnV0b3JUeXBlPSJQcm9qZWN0TWVtYmVyIj4KICAgICAgPGNvbnRyaWJ1dG9yTmFtZT5FdXJvcGVhbiBPcmdhbml6YXRpb24gZm9yIE51Y2xlYXIgUmVzZWFyY2g8L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjkxMzIuOTwvbmFtZUlkZW50aWZpZXI+CiAgICA8L2NvbnRyaWJ1dG9yPgogICAgPGNvbnRyaWJ1dG9yIGNvbnRyaWJ1dG9yVHlwZT0iUHJvamVjdE1lbWJlciI+CiAgICAgIDxjb250cmlidXRvck5hbWU+RGF0YUNpdGU8L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjQ3NTgyNi5hPC9uYW1lSWRlbnRpZmllcj4KICAgIDwvY29udHJpYnV0b3I+CiAgICA8Y29udHJpYnV0b3IgY29udHJpYnV0b3JUeXBlPSJQcm9qZWN0TWVtYmVyIj4KICAgICAgPGNvbnRyaWJ1dG9yTmFtZT5UaGUgVW5pdmVyc2l0eSBvZiBOb3J0aCBDYXJvbGluYSBhdCBDaGFwZWwgSGlsbDwvY29udHJpYnV0b3JOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9IkdSSUQiIHNjaGVtZVVSST0iaHR0cHM6Ly9ncmlkLmFjL2luc3RpdHV0ZXMiPmdyaWQuMTA2OTguMzY8L25hbWVJZGVudGlmaWVyPgogICAgPC9jb250cmlidXRvcj4KICAgIDxjb250cmlidXRvciBjb250cmlidXRvclR5cGU9IlByb2plY3RNZW1iZXIiPgogICAgICA8Y29udHJpYnV0b3JOYW1lPkV1cm9wZWFuIE1vbGVjdWxhciBCaW9sb2d5IExhYm9yYXRvcnk8L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjQ3MDkuYTwvbmFtZUlkZW50aWZpZXI+CiAgICA8L2NvbnRyaWJ1dG9yPgogICAgPGNvbnRyaWJ1dG9yIGNvbnRyaWJ1dG9yVHlwZT0iUHJvamVjdE1lbWJlciI+CiAgICAgIDxjb250cmlidXRvck5hbWU+RWxzZXZpZXI8L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjQ2MjIwNy41PC9uYW1lSWRlbnRpZmllcj4KICAgIDwvY29udHJpYnV0b3I+CiAgICA8Y29udHJpYnV0b3IgY29udHJpYnV0b3JUeXBlPSJQcm9qZWN0TWVtYmVyIj4KICAgICAgPGNvbnRyaWJ1dG9yTmFtZT5PUkNJRCBFVTwvY29udHJpYnV0b3JOYW1lPgogICAgPC9jb250cmlidXRvcj4KICAgIDxjb250cmlidXRvciBjb250cmlidXRvclR5cGU9IlByb2plY3RNZW1iZXIiPgogICAgICA8Y29udHJpYnV0b3JOYW1lPlVuaXZlcnNpdMOkdCBCcmVtZW48L2NvbnRyaWJ1dG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJHUklEIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ3JpZC5hYy9pbnN0aXR1dGVzIj5ncmlkLjc3MDQuNDwvbmFtZUlkZW50aWZpZXI+CiAgICA8L2NvbnRyaWJ1dG9yPgogICAgPGNvbnRyaWJ1dG9yIGNvbnRyaWJ1dG9yVHlwZT0iUHJvamVjdE1lbWJlciI+CiAgICAgIDxjb250cmlidXRvck5hbWU+UHVibGljIExpYnJhcnkgb2YgU2NpZW5jZTwvY29udHJpYnV0b3JOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9IkdSSUQiIHNjaGVtZVVSST0iaHR0cHM6Ly9ncmlkLmFjL2luc3RpdHV0ZXMiPmdyaWQuNDMxMzAyLjc8L25hbWVJZGVudGlmaWVyPgogICAgPC9jb250cmlidXRvcj4KICA8L2NvbnRyaWJ1dG9ycz4KICA8dGl0bGVzPgogICAgPHRpdGxlPlRlY2huaWNhbCBhbmQgSHVtYW4gSW5mcmFzdHJ1Y3R1cmUgZm9yIE9wZW4gUmVzZWFyY2ggKFRIT1IpPC90aXRsZT4KICA8L3RpdGxlcz4KICA8cHVibGlzaGVyPkRhdGFDaXRlPC9wdWJsaXNoZXI+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDE1PC9wdWJsaWNhdGlvblllYXI+CiAgPHJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVHZW5lcmFsPSJDb2xsZWN0aW9uIj5Qcm9qZWN0PC9yZXNvdXJjZVR5cGU+CiAgPHJlbGF0ZWRJZGVudGlmaWVycz4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL1pFTk9ETy4zMDc5OTwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS9aRU5PRE8uMzA4MDA8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvWkVOT0RPLjMxNzg3PC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL1pFTk9ETy4zMTkzMjwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS9aRU5PRE8uMzE5MzM8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvWkVOT0RPLjQ2NzYxPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL1pFTk9ETy40ODIyODwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS9aRU5PRE8uNDg3MDU8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvWkVOT0RPLjU4OTcxPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL1pFTk9ETy42MTE3NjwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS96ZW5vZG8uMTU0NTkyPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL3plbm9kby4xNjgwNDM8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvemVub2RvLjE2ODE4MTwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS96ZW5vZG8uMTY4MTg0PC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL3plbm9kby4xNjgxODc8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvemVub2RvLjE2ODE4ODwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS96ZW5vZG8uMTY4MTkwPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41MjgxL3plbm9kby4xNjgyMDI8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjUyODEvemVub2RvLjE2ODIxMzwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS96ZW5vZG8uMTY4MjE0PC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41NDM4L0JDMTEtQ1FXMTwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTQzOC9DSlQyLVQ2RFo8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSGFzUGFydCIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPjEwLjU0MzgvVzAyOS1ZNld+PC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9Ikhhc1BhcnQiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj4xMC41NDM4L1M4R0YtMENLOTwvcmVsYXRlZElkZW50aWZpZXI+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJIYXNQYXJ0IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNjA4NC9NOS5GSUdTSEFSRS40MjM2NDI4PC9yZWxhdGVkSWRlbnRpZmllcj4KICA8L3JlbGF0ZWRJZGVudGlmaWVycz4KICA8cmlnaHRzTGlzdD4KICAgIDxyaWdodHMgcmlnaHRzVVJJPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDQuMDwvcmlnaHRzPgogIDwvcmlnaHRzTGlzdD4KICA8ZGVzY3JpcHRpb25zPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iQWJzdHJhY3QiPgombHQ7cCZndDtGaXZlIHllYXJzIGFnbywgYSBnbG9iYWwgaW5mcmFzdHJ1Y3R1cmUgdG8gdW5pcXVlbHkgYXR0cmlidXRlIHRvIHJlc2VhcmNoZXJzIHRoZWlyIHNjaWVudGlmaWMgYXJ0ZWZhY3RzIChhcnRpY2xlcywgZGF0YSwgc29mdHdhcmUmIzgyMzA7KSBhcHBlYXJlZCB0ZWNobmljYWxseSBhbmQgc29jaWFsbHkgaW5mZWFzaWJsZS4gU2luY2UgdGhlbiwgRGF0YUNpdGUgaGFzIG1pbnRlZCBvdmVyIDMuNW0gdW5pcXVlIGlkZW50aWZpZXJzIGZvciBkYXRhLiBPUkNJRCBoYXMgZGVwbG95ZWQgYW4gb3BlbiBzb2x1dGlvbiBmb3IgaWRlbnRpZmljYXRpb24gb2YgY29udHJpYnV0b3JzIHdpdGggb3ZlciA4NTAsMDAwIHJlZ2lzdHJhbnRzIGluIGxlc3MgdGhhbiAyIHllYXJzLiAgICBUSE9SIHdpbGwgbGV2ZXJhZ2UgdGhlc2UgZW1lcmdpbmcgZ2xvYmFsIGluZnJhc3RydWN0dXJlcyB0byBzdXBwb3J0IHRoZSBIMjAyMCBnb2FsIHRvIG1ha2UgZXZlcnkgcmVzZWFyY2hlciBkaWdpdGFsIGFuZCBpbmNyZWFzZSBjcmVhdGl2aXR5IGFuZCBlZmZpY2llbmN5IG9mIHJlc2VhcmNoLCB3aGlsZSBicmlkZ2luZyB0aGUgUiZhbXA7RCBkaXZpZGUgYmV0d2VlbiBkZXZlbG9wZWQgYW5kIGxlc3MtZGV2ZWxvcGVkIHJlZ2lvbnMuIFdlIHdpbGwgZXN0YWJsaXNoIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBleGlzdGluZyByZXNvdXJjZXMsIGxpbmtpbmcgZGlnaXRhbCBpZGVudGlmaWVycyBhY3Jvc3MgcGxhdGZvcm1zIGFuZCBwcm9wYWdhdGluZyBhdHRyaWJ1dGlvbiBpbmZvcm1hdGlvbi4gICBXZSB3aWxsIGludGVncmF0ZSBQSUQgc2VydmljZXMgYWNyb3NzIHRoZSByZXNlYXJjaCBsaWZlY3ljbGUgYW5kIGRhdGEgcHVibGlzaGluZyB3b3JrZmxvd3MgaW4gZm91ciBhZHZhbmNlZCByZXNlYXJjaCBjb21tdW5pdGllcywgYW5kIHRoZW4gcm9sbC1vdXQgY29yZSBzZXJ2aWNlcyBhbmQgc2VydmljZSBidWlsZGluZyBibG9ja3MgZm9yIHRoZSB3aWRlciBjb21tdW5pdHkuIFRoZXNlIG9wZW4gcmVzb3VyY2VzIHdpbGwgZm9zdGVyIGFuIG9wZW4gYW5kIHN1c3RhaW5hYmxlIGUtaW5mcmFzdHJ1Y3R1cmUgYWNyb3NzIHN0YWtlaG9sZGVycyB0byBhdm9pZCBkdXBsaWNhdGlvbnMsIGdpdmUgZWNvbm9taWVzIG9mIHNjYWxlLCByaWNobmVzcyBvZiBzZXJ2aWNlcyBhbmQgdGhlIGFiaWxpdHkgdG8gcmVzcG9uZCByYXBpZGx5IHRvIG9wcG9ydHVuaXRpZXMgZm9yIGlubm92YXRpb24uICAgVEhPUiBpcyBub3QganVzdCByZWxldmFudCB0byB0aGUgRUlORlJBLTctMTAyNCBDYWxsLCBidXQgd2lsbCBiZWNvbWUgYSBwZXJ2YXNpdmUgZWxlbWVudCBvZiB0aGUgRUlORlJBIGZhbWlseSBvZiBlLUluZnJhc3RydWN0dXJlIHJlc291cmNlcyBvdmVyIHRoZSBuZXh0IDMgeWVhcnMuIEl0IHdpbGwgYWxsb3cgZGF0YS1tYW5hZ2VtZW50IGFuZCBjdXJhdGlvbiBzZXJ2aWNlcyB0byBleHBsb2l0IGtub3dsZWRnZSBvZiBkYXRhIGxvY2F0aW9uIGFuZCBhdHRyaWJ1dGlvbjsgcHJvdmlkZSByb2J1c3QgYW5kIHBlcnNpc3RlbnQgbWVjaGFuaXNtIGZvciBsaW5raW5nIGxpdGVyYXR1cmUgYW5kIGRhdGE7IGVuYWJsZSBzZWFyY2ggYW5kIHJlc29sdmluZyBzZXJ2aWNlcyBhbmQgZ2VuZXJhdGUgaW5jZW50aXZlcyBmb3IgT3BlbiBTY2llbmNlOyBkZWxpdmVyIHByb3ZlbmFuY2UgYW5kIGF0dHJpYnV0aW9uIG1lY2hhbmlzbXMgdG8gdW5kZXJwaW4gZGF0YSBleGNoYW5nZTsgYW5kIHByb3ZpZGUgbWludGluZyBhbmQgcmVzb2x2aW5nIHNlcnZpY2VzIGZvciBkYXRhIGNpdGF0aW9uIHdvcmtmbG93cy4gICBJdHMgaW1wYWN0IHdpbGwgZW5hYmxlIHRoaXJkLXBhcnR5IHNlcnZpY2VzLCBuby1wcm9maXQgYW5kIGNvbW1lcmNpYWwsIHRvIGxldmVyYWdlIHRoZSBzY2hvbGFybHkgcmVjb3JkLiZsdDsvcCZndDsKICAgIDwvZGVzY3JpcHRpb24+CiAgPC9kZXNjcmlwdGlvbnM+CiAgPGZ1bmRpbmdSZWZlcmVuY2VzPgogICAgPGZ1bmRpbmdSZWZlcmVuY2U+CiAgICAgIDxmdW5kZXJOYW1lPkV1cm9wZWFuIENvbW1pc3Npb248L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJDcm9zc3JlZiBGdW5kZXIgSUQiPmh0dHA6Ly9keC5kb2kub3JnLzEwLjEzMDM5LzUwMTEwMDAwMDc4MDwvZnVuZGVySWRlbnRpZmllcj4KICAgICAgPGF3YXJkTnVtYmVyIGF3YXJkVVJJPSJodHRwOi8vY29yZGlzLmV1cm9wYS5ldS9wcm9qZWN0L3Jjbi8xOTQ5MjdfZW4uaHRtbCI+NjU0MDM5PC9hd2FyZE51bWJlcj4KICAgICAgPGF3YXJkVGl0bGU+VEhPUiDigJMgVGVjaG5pY2FsIGFuZCBIdW1hbiBJbmZyYXN0cnVjdHVyZSBmb3IgT3BlbiBSZXNlYXJjaDwvYXdhcmRUaXRsZT4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICA8L2Z1bmRpbmdSZWZlcmVuY2VzPgo8L3Jlc291cmNlPgo=","minted":"2016-09-24T20:26:53Z","updated":"2017-02-06T14:24:31Z","doi":"10.5438/6423"}]}}
|
34
|
+
|
35
|
+
'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Fri, 12 May 2017 10:02:42 GMT
|
38
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://search.datacite.org/api?fl=doi,xml,media,minted,updated&q=doi:10.5281/zenodo.1239&wt=json
|
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-Methods:
|
20
|
+
- GET, POST, OPTIONS
|
21
|
+
Access-Control-Allow-Origin:
|
22
|
+
- "*"
|
23
|
+
Content-Type:
|
24
|
+
- application/json;charset=UTF-8
|
25
|
+
Date:
|
26
|
+
- Fri, 12 May 2017 10:05:17 GMT
|
27
|
+
Server:
|
28
|
+
- openresty/1.11.2.2
|
29
|
+
Content-Length:
|
30
|
+
- '3143'
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: '{"responseHeader":{"status":0,"QTime":0},"response":{"numFound":1,"start":0,"docs":[{"xml":"PHJlc291cmNlIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC0zL21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS9aRU5PRE8uMTIzOTwvaWRlbnRpZmllcj4KICA8Y3JlYXRvcnM+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkphaG4sIE5hamtvPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+RmVubmVyLCBNYXJ0aW48L2NyZWF0b3JOYW1lPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZT5EaW1pdHJvcG91bG9zLCBIYXJyeTwvY3JlYXRvck5hbWU+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPlNjaGlycndhZ2VuLCBKb2NoZW48L2NyZWF0b3JOYW1lPgogICAgPC9jcmVhdG9yPgogIDwvY3JlYXRvcnM+CiAgPHRpdGxlcz4KICAgIDx0aXRsZT5QdWJsaWNhdGlvbiBGUDcgRnVuZGluZyBBY2tub3dsZWRnbWVudCAtIFBMT1MgT3BlbkFJUkU8L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXI+T3BlbkFJUkUgT3JwaGFuIFJlY29yZCBSZXBvc2l0b3J5PC9wdWJsaXNoZXI+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDEzPC9wdWJsaWNhdGlvblllYXI+CiAgPHN1YmplY3RzPgogICAgPHN1YmplY3Q+QXJ0aWNsZS1MZXZlbCBNZXRyaWNzPC9zdWJqZWN0PgogICAgPHN1YmplY3Q+RGF0YSBtaW5pbmc8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5TdGF0aXN0aWNhbCBDb21wdXRpbmcgTGFuZ3VhZ2UgUjwvc3ViamVjdD4KICAgIDxzdWJqZWN0PmZ1bmRlZCByZXNlYXJjaCBwdWJsaWNhdGlvbnM8L3N1YmplY3Q+CiAgPC9zdWJqZWN0cz4KICA8Y29udHJpYnV0b3JzPgogICAgPGNvbnRyaWJ1dG9yIGNvbnRyaWJ1dG9yVHlwZT0iRnVuZGVyIj4KICAgICAgPGNvbnRyaWJ1dG9yTmFtZT5FdXJvcGVhbiBDb21taXNzaW9uPC9jb250cmlidXRvck5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iaW5mbyI+aW5mbzpldS1yZXBvL2dyYW50QWdyZWVtZW50L0VDL0ZQNy8yNDY2ODY8L25hbWVJZGVudGlmaWVyPgogICAgPC9jb250cmlidXRvcj4KICA8L2NvbnRyaWJ1dG9ycz4KICA8ZGF0ZXM+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iSXNzdWVkIj4yMDEzLTA0LTAzPC9kYXRlPgogICAgPGRhdGUgZGF0ZVR5cGU9Iklzc3VlZCI+MjAxMzwvZGF0ZT4KICA8L2RhdGVzPgogIDxsYW5ndWFnZT5lbmc8L2xhbmd1YWdlPgogIDxyZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlR2VuZXJhbD0iRGF0YXNldCIvPgogIDxhbHRlcm5hdGVJZGVudGlmaWVycz4KICAgIDxhbHRlcm5hdGVJZGVudGlmaWVyIGFsdGVybmF0ZUlkZW50aWZpZXJUeXBlPSJVUkwiPmh0dHA6Ly96ZW5vZG8ub3JnL3JlY29yZC8xMjM5PC9hbHRlcm5hdGVJZGVudGlmaWVyPgogIDwvYWx0ZXJuYXRlSWRlbnRpZmllcnM+CiAgPHJpZ2h0c0xpc3Q+CiAgICA8cmlnaHRzIHJpZ2h0c1VSST0iaW5mbzpldS1yZXBvL3NlbWFudGljcy9vcGVuQWNjZXNzIj5PcGVuIEFjY2VzczwvcmlnaHRzPgogICAgPHJpZ2h0cyByaWdodHNVUkk9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8iPkNyZWF0aXZlIENvbW1vbnMgWmVybyAxLjAgVW5pdmVyc2FsPC9yaWdodHM+CiAgPC9yaWdodHNMaXN0PgogIDxkZXNjcmlwdGlvbnM+CiAgICA8ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJBYnN0cmFjdCI+VGhlIGRhdGFzZXQgY29udGFpbnMgYSBzYW1wbGUgb2YgbWV0YWRhdGEgZGVzY3JpYmluZyBwYXBlcnMgcHVibGlzaGVkIGluIFBMT1MgYW5kIHRoZWlyIGlkZW50aWZpZWQgZ3JhbnQgYWdyZWVtZW50IG51bWJlciBvZiBGUDcgcHJvamVjdHMuIEEgc2Vjb25kIGZpbGUgc2hvd3MgdGhlIGZyZXF1ZW5jeSBvZiBGUDcgZ3JhbnRzLiBUaGUgc2FtcGxlIHdhcyBjcmVhdGVkIGluIEp1bHkgMjAxMi48L2Rlc2NyaXB0aW9uPgogIDwvZGVzY3JpcHRpb25zPgo8L3Jlc291cmNlPgoNCg0K","minted":"2013-04-03T09:52:22Z","updated":"2014-04-15T08:13:50Z","doi":"10.5281/ZENODO.1239"}]}}
|
36
|
+
|
37
|
+
'
|
38
|
+
http_version:
|
39
|
+
recorded_at: Fri, 12 May 2017 10:05:17 GMT
|
40
|
+
recorded_with: VCR 3.0.3
|
@@ -29,13 +29,16 @@ describe Bolognese::Metadata, vcr: true do
|
|
29
29
|
expect(subject.is_part_of).to eq("type"=>"Periodical", "title"=>"eLife", "issn"=>"2050-084X")
|
30
30
|
expect(subject.references.count).to eq(25)
|
31
31
|
expect(subject.references[19]).to eq("id"=>"https://doi.org/10.5061/dryad.b835k", "type"=>"CreativeWork")
|
32
|
-
expect(subject.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
"
|
37
|
-
|
38
|
-
|
32
|
+
expect(subject.funding).to eq([{"type"=>"Organization", "name"=>"SystemsX"},
|
33
|
+
{"type"=>"Organization",
|
34
|
+
"id"=>"https://doi.org/10.13039/501100003043",
|
35
|
+
"name"=>"EMBO"},
|
36
|
+
{"type"=>"Organization",
|
37
|
+
"id"=>"https://doi.org/10.13039/501100001711",
|
38
|
+
"name"=>"Swiss National Science Foundation"},
|
39
|
+
{"type"=>"Organization",
|
40
|
+
"id"=>"https://doi.org/10.13039/501100006390",
|
41
|
+
"name"=>"University of Lausanne"}])
|
39
42
|
expect(subject.provider).to eq("Crossref")
|
40
43
|
end
|
41
44
|
|
@@ -124,7 +124,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
124
124
|
expect(subject.description["text"]).to start_with("The dataset contains a sample of metadata describing papers")
|
125
125
|
expect(subject.date_published).to eq("2013-04-03")
|
126
126
|
expect(subject.publisher).to eq("OpenAIRE Orphan Record Repository")
|
127
|
-
expect(subject.
|
127
|
+
expect(subject.funding).to eq("type"=>"Award", "identifier"=>"246686", "funder"=>{"type"=>"Organization", "name"=>"European Commission"})
|
128
128
|
expect(subject.provider).to eq("DataCite")
|
129
129
|
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
|
130
130
|
end
|
@@ -181,7 +181,11 @@ describe Bolognese::Metadata, vcr: true do
|
|
181
181
|
expect(subject.description["text"]).to start_with("Five years ago, a global infrastructure")
|
182
182
|
expect(subject.date_published).to eq("2015")
|
183
183
|
expect(subject.publisher).to eq("DataCite")
|
184
|
-
expect(subject.
|
184
|
+
expect(subject.funding).to eq("type"=>"Award",
|
185
|
+
"funder" => {"type"=>"Organization", "id"=>"https://doi.org/10.13039/501100000780", "name"=>"European Commission"},
|
186
|
+
"identifier" => "654039",
|
187
|
+
"name" => "THOR – Technical and Human Infrastructure for Open Research",
|
188
|
+
"url" => "http://cordis.europa.eu/project/rcn/194927_en.html")
|
185
189
|
expect(subject.provider).to eq("DataCite")
|
186
190
|
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
|
187
191
|
end
|
@@ -7,6 +7,16 @@ describe Bolognese::Metadata, vcr: true do
|
|
7
7
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
8
8
|
json = JSON.parse(subject.schema_org)
|
9
9
|
expect(json["@id"]).to eq("https://doi.org/10.7554/elife.01567")
|
10
|
+
expect(json["funding"]).to eq([{"name"=>"SystemsX", "@type"=>"Organization"},
|
11
|
+
{"name"=>"EMBO",
|
12
|
+
"@type"=>"Organization",
|
13
|
+
"@id"=>"https://doi.org/10.13039/501100003043"},
|
14
|
+
{"name"=>"Swiss National Science Foundation",
|
15
|
+
"@type"=>"Organization",
|
16
|
+
"@id"=>"https://doi.org/10.13039/501100001711"},
|
17
|
+
{"name"=>"University of Lausanne",
|
18
|
+
"@type"=>"Organization",
|
19
|
+
"@id"=>"https://doi.org/10.13039/501100006390"}])
|
10
20
|
end
|
11
21
|
|
12
22
|
it "maremma schema.org JSON" do
|
@@ -64,5 +74,27 @@ describe Bolognese::Metadata, vcr: true do
|
|
64
74
|
{"name"=>"University Of California, Santa Barbara", "@type"=>"Organization"}])
|
65
75
|
expect(json["version"]).to eq("2.0.0")
|
66
76
|
end
|
77
|
+
|
78
|
+
it "Funding" do
|
79
|
+
input = "https://doi.org/10.5438/6423"
|
80
|
+
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
81
|
+
json = JSON.parse(subject.schema_org)
|
82
|
+
expect(json["@id"]).to eq("https://doi.org/10.5438/6423")
|
83
|
+
expect(json["funding"]).to eq("@type" => "Award",
|
84
|
+
"funder" => {"type"=>"Organization", "id"=>"https://doi.org/10.13039/501100000780", "name"=>"European Commission"},
|
85
|
+
"identifier" => "654039",
|
86
|
+
"name" => "THOR – Technical and Human Infrastructure for Open Research",
|
87
|
+
"url" => "http://cordis.europa.eu/project/rcn/194927_en.html")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "Funding OpenAIRE" do
|
91
|
+
input = "https://doi.org/10.5281/ZENODO.1239"
|
92
|
+
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
93
|
+
json = JSON.parse(subject.schema_org)
|
94
|
+
expect(json["@id"]).to eq("https://doi.org/10.5281/zenodo.1239")
|
95
|
+
expect(json["funding"]).to eq("@type" => "Award",
|
96
|
+
"funder" => {"type"=>"Organization", "name"=>"European Commission"},
|
97
|
+
"identifier" => "246686")
|
98
|
+
end
|
67
99
|
end
|
68
100
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: maremma
|
@@ -431,6 +431,7 @@ extra_rdoc_files:
|
|
431
431
|
files:
|
432
432
|
- ".gitignore"
|
433
433
|
- ".travis.yml"
|
434
|
+
- CITATION
|
434
435
|
- Gemfile
|
435
436
|
- Gemfile.lock
|
436
437
|
- LICENSE.md
|
@@ -720,6 +721,8 @@ files:
|
|
720
721
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/journal_article.yml
|
721
722
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/maremma.yml
|
722
723
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/with_pages.yml
|
724
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding.yml
|
725
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding_OpenAIRE.yml
|
723
726
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON.yml
|
724
727
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_IsSupplementTo.yml
|
725
728
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_isReferencedBy.yml
|