bolognese 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10cdfb9cf4afc028e4788f22729bd2e18c0ad5df8d253dab1c3cb5145aa51007
4
- data.tar.gz: f164c0d3792dfcea104409d2b53755e0e8f45088544edfe32ed4be1efd538aa0
3
+ metadata.gz: 168dbdf9c5d9941dc078dd58d9696fa8c725a6eda1b33ec0a683b7ecfc0ac00d
4
+ data.tar.gz: d156284fc1a2c67d5bc401e571909ab1c192bba5963b06e266c4a1d19ba4bc7b
5
5
  SHA512:
6
- metadata.gz: 586a8e8f637fec130a6d038715a3abb209208ca6d7fbb5f909e87ae87e9003724a0d339b4e0d75fda1c2eda4cdfd677c4faa39b5aeb3c3ea79106c93dbef0760
7
- data.tar.gz: 5e1d70854fffe8457714e878b9dd2ae88343aa8472986e04a24ad97b9fdd503093b70d34b3f00b86cf2c9726ac4cc22d67cdfb078602bb50d55475a3d6207821
6
+ metadata.gz: 1514f703356abef2dfc1dfb1be6131d2d1d5f861c89352780918aa57ee4878b61779ffa2f41221575abf09e15198f67e5491a923cfaad00b13d3ef233ddc8059
7
+ data.tar.gz: 9c39ab0ded867281c7fbfc3edca254e5cef2f023339d56e8ed00fd7755a7361cbf6569a6cf1c42d577e0e534f755c83587ee68e33900b6372eb8599f488b5bc4
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (1.2.2)
4
+ bolognese (1.2.3)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -174,15 +174,21 @@ module Bolognese
174
174
  end
175
175
 
176
176
  def crossref_people(bibliographic_metadata, contributor_role)
177
- person = bibliographic_metadata.dig("contributors", "person_name")
177
+ person = bibliographic_metadata.dig("contributors", "person_name") || [{ "name" => ":(unav)", "contributor_role"=>"author" }]
178
178
  Array.wrap(person).select { |a| a["contributor_role"] == contributor_role }.map do |a|
179
179
  name_identifiers = normalize_orcid(parse_attributes(a["ORCID"])).present? ? [{ "nameIdentifier" => normalize_orcid(parse_attributes(a["ORCID"])), "nameIdentifierScheme" => "ORCID", "schemeUri"=>"https://orcid.org" }] : nil
180
- { "nameType" => "Personal",
181
- "nameIdentifiers" => name_identifiers,
182
- "name" => [a["surname"], a["given_name"]].join(", "),
183
- "givenName" => a["given_name"],
184
- "familyName" => a["surname"],
185
- "contributorType" => contributor_role == "editor" ? "Editor" : nil }.compact
180
+ if a["surname"].present? || a["given_name"].present? || name_identifiers.present?
181
+ { "nameType" => "Personal",
182
+ "nameIdentifiers" => name_identifiers,
183
+ "name" => [a["surname"], a["given_name"]].join(", "),
184
+ "givenName" => a["given_name"],
185
+ "familyName" => a["surname"],
186
+ "contributorType" => contributor_role == "editor" ? "Editor" : nil }.compact
187
+ else
188
+ { "nameType" => "Organizational",
189
+ "name" => a["name"],
190
+ "contributorType" => a["contributor_role"] }
191
+ end
186
192
  end.unwrap
187
193
  end
188
194
 
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
@@ -0,0 +1,89 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.3390
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.2.3; mailto:info@datacite.org)
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
+ Date:
20
+ - Thu, 04 Jul 2019 13:49:19 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Content-Length:
24
+ - '54'
25
+ Connection:
26
+ - keep-alive
27
+ Set-Cookie:
28
+ - __cfduid=d819a54129d741ec2c3f8479097efe6cb1562248159; expires=Fri, 03-Jul-20
29
+ 13:49:19 GMT; path=/; domain=.doi.org; HttpOnly
30
+ Expect-Ct:
31
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
32
+ Server:
33
+ - cloudflare
34
+ Cf-Ray:
35
+ - 4f118fd1cda4a8af-CDG
36
+ body:
37
+ encoding: ASCII-8BIT
38
+ string: |-
39
+ [
40
+ {
41
+ "DOI": "10.3390",
42
+ "RA": "Crossref"
43
+ }
44
+ ]
45
+ http_version:
46
+ recorded_at: Thu, 04 Jul 2019 13:49:19 GMT
47
+ - request:
48
+ method: get
49
+ uri: https://api.crossref.org/works/10.3390/publications6020015/transform/application/vnd.crossref.unixsd+xml
50
+ body:
51
+ encoding: US-ASCII
52
+ string: ''
53
+ headers:
54
+ User-Agent:
55
+ - Mozilla/5.0 (compatible; Maremma/4.2.3; mailto:info@datacite.org)
56
+ Accept:
57
+ - text/xml
58
+ response:
59
+ status:
60
+ code: 200
61
+ message: OK
62
+ headers:
63
+ Link:
64
+ - <http://dx.doi.org/10.3390/publications6020015>; rel="canonical", <http://www.mdpi.com/2304-6775/6/2/15/pdf>;
65
+ version="vor"; rel="item", <https://creativecommons.org/licenses/by/4.0/>;
66
+ rel="license"
67
+ Access-Control-Allow-Origin:
68
+ - "*"
69
+ Access-Control-Allow-Headers:
70
+ - X-Requested-With
71
+ Content-Length:
72
+ - '10550'
73
+ Server:
74
+ - http-kit
75
+ Date:
76
+ - Thu, 04 Jul 2019 13:49:19 GMT
77
+ X-Rate-Limit-Limit:
78
+ - '50'
79
+ X-Rate-Limit-Interval:
80
+ - 1s
81
+ Connection:
82
+ - close
83
+ body:
84
+ encoding: ASCII-8BIT
85
+ string: !binary |-
86
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iam91cm5hbF9hcnRpY2xlIj4xMC4zMzkwL3B1YmxpY2F0aW9uczYwMjAwMTU8L2RvaT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InB1Ymxpc2hlci1uYW1lIiB0eXBlPSJzdHJpbmciPk1EUEkgQUc8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icHJlZml4LW5hbWUiIHR5cGU9InN0cmluZyI+TURQSSBBRzwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJtZW1iZXItaWQiIHR5cGU9Im51bWJlciI+MTk2ODwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRhdGlvbi1pZCIgdHlwZT0ibnVtYmVyIj45NzczMzY5NjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJqb3VybmFsLWlkIiB0eXBlPSJudW1iZXIiPjE5NDY2NTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJkZXBvc2l0LXRpbWVzdGFtcCIgdHlwZT0ibnVtYmVyIj4yMDE4MDQxMDE4NTgzODwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJvd25lci1wcmVmaXgiIHR5cGU9InN0cmluZyI+MTAuMzM5MDwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJsYXN0LXVwZGF0ZSIgdHlwZT0iZGF0ZSI+MjAxOC0wNC0xMFQxNzo1ODowNVo8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY3JlYXRlZCIgdHlwZT0iZGF0ZSI+MjAxOC0wNC0xMFQxNzowNjowOFo8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0ZWRieS1jb3VudCIgdHlwZT0ibnVtYmVyIj4wPC9jcm0taXRlbT4NCiAgICAgICAgPGRvaV9yZWNvcmQ+DQogICAgICAgICAgPGNyb3NzcmVmIHhtbG5zPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSBodHRwOi8vZG9pLmNyb3NzcmVmLm9yZy9zY2hlbWFzL3VuaXhyZWYxLjEueHNkIj4NCiAgICAgICAgICAgIDxqb3VybmFsPg0KICAgICAgICAgICAgICA8am91cm5hbF9tZXRhZGF0YSBsYW5ndWFnZT0iZW4iPg0KICAgICAgICAgICAgICAgIDxmdWxsX3RpdGxlPlB1YmxpY2F0aW9uczwvZnVsbF90aXRsZT4NCiAgICAgICAgICAgICAgICA8YWJicmV2X3RpdGxlPlB1YmxpY2F0aW9uczwvYWJicmV2X3RpdGxlPg0KICAgICAgICAgICAgICAgIDxpc3NuIG1lZGlhX3R5cGU9ImVsZWN0cm9uaWMiPjIzMDQtNjc3NTwvaXNzbj4NCiAgICAgICAgICAgICAgPC9qb3VybmFsX21ldGFkYXRhPg0KICAgICAgICAgICAgICA8am91cm5hbF9pc3N1ZT4NCiAgICAgICAgICAgICAgICA8cHVibGljYXRpb25fZGF0ZSBtZWRpYV90eXBlPSJvbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPG1vbnRoPjY8L21vbnRoPg0KICAgICAgICAgICAgICAgICAgPHllYXI+MjAxODwveWVhcj4NCiAgICAgICAgICAgICAgICA8L3B1YmxpY2F0aW9uX2RhdGU+DQogICAgICAgICAgICAgICAgPGpvdXJuYWxfdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgPHZvbHVtZT42PC92b2x1bWU+DQogICAgICAgICAgICAgICAgPC9qb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICA8aXNzdWU+MjwvaXNzdWU+DQogICAgICAgICAgICAgIDwvam91cm5hbF9pc3N1ZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfYXJ0aWNsZSBwdWJsaWNhdGlvbl90eXBlPSJmdWxsX3RleHQiPg0KICAgICAgICAgICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgICAgICAgICA8dGl0bGU+Q29udmVydGluZyB0aGUgTGl0ZXJhdHVyZSBvZiBhIFNjaWVudGlmaWMgRmllbGQgdG8gT3BlbiBBY2Nlc3MgdGhyb3VnaCBHbG9iYWwgQ29sbGFib3JhdGlvbjogVGhlIEV4cGVyaWVuY2Ugb2YgU0NPQVAzIGluIFBhcnRpY2xlIFBoeXNpY3M8L3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICAgIDxjb250cmlidXRvcnM+DQogICAgICAgICAgICAgICAgICA8b3JnYW5pemF0aW9uIHNlcXVlbmNlPSJmaXJzdCIgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIj5BbGV4YW5kZXIgS29obHM8L29yZ2FuaXphdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxvcmdhbml6YXRpb24gc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+U2FsdmF0b3JlIE1lbGU8L29yZ2FuaXphdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICA8cHVibGljYXRpb25fZGF0ZSBtZWRpYV90eXBlPSJvbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPG1vbnRoPjA0PC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDxkYXk+MDk8L2RheT4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTg8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwYWdlcz4NCiAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE1PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgIDwvcGFnZXM+DQogICAgICAgICAgICAgICAgPHB1Ymxpc2hlcl9pdGVtPg0KICAgICAgICAgICAgICAgICAgPGlkZW50aWZpZXIgaWRfdHlwZT0icGlpIj5wdWJsaWNhdGlvbnM2MDIwMDE1PC9pZGVudGlmaWVyPg0KICAgICAgICAgICAgICAgIDwvcHVibGlzaGVyX2l0ZW0+DQogICAgICAgICAgICAgICAgPGFpOnByb2dyYW0geG1sbnM6YWk9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL0FjY2Vzc0luZGljYXRvcnMueHNkIiBuYW1lPSJBY2Nlc3NJbmRpY2F0b3JzIj4NCiAgICAgICAgICAgICAgICAgIDxhaTpmcmVlX3RvX3JlYWQgLz4NCiAgICAgICAgICAgICAgICAgIDxhaTpsaWNlbnNlX3JlZj5odHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wLzwvYWk6bGljZW5zZV9yZWY+DQogICAgICAgICAgICAgICAgPC9haTpwcm9ncmFtPg0KICAgICAgICAgICAgICAgIDxkb2lfZGF0YT4NCiAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMzM5MC9wdWJsaWNhdGlvbnM2MDIwMDE1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cDovL3d3dy5tZHBpLmNvbS8yMzA0LTY3NzUvNi8yLzE1PC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0gY3Jhd2xlcj0iaVBhcmFkaWdtcyI+DQogICAgICAgICAgICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly93d3cubWRwaS5jb20vMjMwNC02Nzc1LzYvMi8xNS9wZGY8L3Jlc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjEiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmb250PkNFUk4gQ29udmVudGlvbiBmb3IgdGhlIEVzdGFibGlzaG1lbnQgb2YgYSBFdXJvcGVhbiBPcmdhbml6YXRpb24gZm9yIE51Y2xlYXIgUmVzZWFyY2g8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cHM6Ly9jb3VuY2lsLndlYi5jZXJuLmNoL2VuL2NvbnRlbnQvY29udmVudGlvbi1lc3RhYmxpc2htZW50LWV1cm9wZWFuLW9yZ2FuaXphdGlvbi1udWNsZWFyLXJlc2VhcmNoPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYyIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5DRVJOIE1lbWJlciBTdGF0ZXM8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cDovL3d3dy53ZWJjaXRhdGlvbi5vcmcvNnhOR0RIMm9VPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYzIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5DRVJOIERpc3RyaWJ1dGlvbiBvZiBhbGwgQ0VSTiBVc2VycyBieSBMb2NhdGlvbiBvZiBJbnN0aXR1dGVzIG9uIDUgSnVseSAyMDE3PC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgIDx1Pmh0dHBzOi8vY2RzLmNlcm4uY2gvcmVjb3JkLzIyOTA0MDc8L3U+DQogICAgICAgICAgICAgICAgICAgIDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjQiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjMyMzMvSVNVLTIwMDgtMDU3MDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjUiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmb250PkNvbW11bmljYXRpb24gUGF0dGVybnMgaW4gSGlnaC1FbmVyZ3kgUGh5c2ljczwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICA8dT5odHRwOi8vd2ViemluZS53ZWIuY2Vybi5jaC93ZWJ6aW5lLzYvcGFwZXJzLzEvaW5kZXguaHRtbDwvdT4NCiAgICAgICAgICAgICAgICAgICAgPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0icmVmNiI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAzOC9ucGh5czM4NjI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWY3Ij4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5JbmZvcm1hdGlvbiBNYW5hZ2VtZW50OiBBIFByb3Bvc2FsPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgIDx1Pmh0dHBzOi8vY2RzLmNlcm4uY2gvcmVjb3JkLzM2OTI0NTwvdT4NCiAgICAgICAgICAgICAgICAgICAgPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0icmVmOCI+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+U3ViZXI8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+V2hhdCBpcyBPcGVuIEFjY2VzczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPHNlcmllc190aXRsZT5PcGVuIEFjY2Vzczwvc2VyaWVzX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMjwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0icmVmOSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAwNy9zMTExOTItMDA5LTAxMTEtMTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjEwIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5Ub3dhcmRzIE9wZW4gQWNjZXNzIFB1Ymxpc2hpbmcgaW4gSGlnaCBFbmVyZ3kgUGh5c2ljczogUmVwb3J0IG9mIHRoZSBTQ09BUDMgV29ya2luZyBQYXJ0eTwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICA8dT5odHRwczovL3Njb2FwMy5vcmcvZmlsZXMvV29ya2luZ19QYXJ0eV9SZXBvcnQucGRmPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYxMSI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgPGZvbnQ+U0NPQVAzIEludml0YXRpb24gdG8gVGVuZGVy4oCUVGVjaG5pY2FsIFNwZWNpZmljYXRpb248L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cHM6Ly9zY29hcDMub3JnL2ZpbGVzL1RlY2huaWNhbF9TcGVjaWZpY2F0aW9uLnBkZjwvdT4NCiAgICAgICAgICAgICAgICAgICAgPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0icmVmMTIiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmb250PlJDVUsgUG9saWN5IG9uIE9wZW4gQWNjZXNzPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgIDx1Pmh0dHA6Ly93d3cucmN1ay5hYy51ay9kb2N1bWVudHMvZG9jdW1lbnRzL3JjdWtvcGVuYWNjZXNzcG9saWN5LXBkZi88L3U+DQogICAgICAgICAgICAgICAgICAgIDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjEzIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5GV0YgT3BlbiBBY2Nlc3MgUG9saWN5PC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgIDx1Pmh0dHA6Ly93d3cud2ViY2l0YXRpb24ub3JnLzZ4TkZ3dEFTZjwvdT4NCiAgICAgICAgICAgICAgICAgICAgPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0icmVmMTQiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmb250PlF1YW50aXRhdGl2ZSBTdHVkeSBvZiB0aGUgR2VvZ3JhcGhpY2FsIERpc3RyaWJ1dGlvbiBvZiB0aGUgQXV0aG9yc2hpcCBvZiBIaWdoLUVuZXJneSBQaHlzaWNzIEpvdXJuYWxzPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgIDx1Pmh0dHBzOi8vY2RzLmNlcm4uY2gvcmVjb3JkLzEwMzMwOTk8L3U+DQogICAgICAgICAgICAgICAgICAgIDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjE1Ij4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5TQ09BUDMgUGFydGljaXBhdGluZyBDb3VudHJpZXM8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cDovL3d3dy53ZWJjaXRhdGlvbi5vcmcvNnhORmxCejlSPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYxNiI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgPGZvbnQ+V2hhdCBpcyBTQ09BUDM6IEdvdmVybmFuY2U8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cDovL3d3dy53ZWJjaXRhdGlvbi5vcmcvNnhORnBBUktFPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYxNyI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMjMxNC9DRVJOL0MyNlAuVzlEVDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjE4Ij4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5TQ09BUDMgUGhhc2UgMSBKb3VybmFsczwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICA8dT5odHRwOi8vd3d3LndlYmNpdGF0aW9uLm9yZy82eE5HMkNVdDE8L3U+DQogICAgICAgICAgICAgICAgICAgIDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjE5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC40MTE5L1VOSUJJL1VCLjIwMTQuMTg8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYyMCI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgPGZvbnQ+QXJ0aWNsZSBQcm9jZXNzaW5nIENoYXJnZXMgKEFQQ3MpIGFuZCBTdWJzY3JpcHRpb25z4oCUTW9uaXRvcmluZyBPcGVuIEFjY2VzcyBDb3N0czwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICA8dT5odHRwczovL3d3dy5qaXNjLmFjLnVrL3NpdGVzL2RlZmF1bHQvZmlsZXMvYXBjLWFuZC1zdWJzY3JpcHRpb25zLXJlcG9ydC5wZGY8L3U+DQogICAgICAgICAgICAgICAgICAgIDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9InJlZjIxIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8Zm9udD5TQ09BUDMgRm9ydW0gMjAxNyBQcmVzZW50YXRpb248L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cHM6Ly9zY29hcDMub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE3LzEyL1dlYmluYXItRGVjLTIwMTcucGRmPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYyMiI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgPGZvbnQ+SW5zcGlyZUhFUDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICA8dT5odHRwOi8vaW5zcGlyZWhlcC5uZXQvP2xuPWVuPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJyZWYyMyI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgPGZvbnQ+U0NPQVAzIE5ld3M6IEFQUyBKb2lucyBTQ09BUDM8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgPHU+aHR0cDovL3d3dy53ZWJjaXRhdGlvbi5vcmcvNnhORlFiNWlEPC91Pg0KICAgICAgICAgICAgICAgICAgICA8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbl9saXN0Pg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfYXJ0aWNsZT4NCiAgICAgICAgICAgIDwvam91cm5hbD4NCiAgICAgICAgICA8L2Nyb3NzcmVmPg0KICAgICAgICA8L2RvaV9yZWNvcmQ+DQogICAgICA8L3F1ZXJ5Pg0KICAgIDwvYm9keT4NCiAgPC9xdWVyeV9yZXN1bHQ+DQo8L2Nyb3NzcmVmX3Jlc3VsdD4=
87
+ http_version:
88
+ recorded_at: Thu, 04 Jul 2019 13:49:19 GMT
89
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.3280
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.2.3; mailto:info@datacite.org)
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
+ Date:
20
+ - Thu, 04 Jul 2019 13:45:42 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Content-Length:
24
+ - '51'
25
+ Connection:
26
+ - keep-alive
27
+ Set-Cookie:
28
+ - __cfduid=da05a7d2fa59e8555ee2d62c1f6d7b8821562247942; expires=Fri, 03-Jul-20
29
+ 13:45:42 GMT; path=/; domain=.doi.org; HttpOnly
30
+ Expect-Ct:
31
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
32
+ Server:
33
+ - cloudflare
34
+ Cf-Ray:
35
+ - 4f118a876833cd93-CDG
36
+ body:
37
+ encoding: ASCII-8BIT
38
+ string: |-
39
+ [
40
+ {
41
+ "DOI": "10.3280",
42
+ "RA": "mEDRA"
43
+ }
44
+ ]
45
+ http_version:
46
+ recorded_at: Thu, 04 Jul 2019 13:45:42 GMT
47
+ recorded_with: VCR 3.0.3
@@ -210,6 +210,21 @@ describe Bolognese::Metadata, vcr: true do
210
210
  expect(subject.agency).to eq("Crossref")
211
211
  end
212
212
 
213
+ it "missing creator" do
214
+ input = "https://doi.org/10.3390/publications6020015"
215
+ subject = Bolognese::Metadata.new(input: input)
216
+ expect(subject.valid?).to be true
217
+ expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.3390/publications6020015", "identifierType"=>"DOI"}])
218
+ expect(subject.url).to eq("http://www.mdpi.com/2304-6775/6/2/15")
219
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
220
+ expect(subject.creators).to eq("contributorType"=>"author", "name"=>":(unav)", "nameType"=>"Organizational")
221
+ expect(subject.titles).to eq([{"title"=>"Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics"}])
222
+ expect(subject.dates).to eq([{"date"=>"2018-04-09", "dateType"=>"Issued"}, {"date"=>"2018-04-10T17:58:05Z", "dateType"=>"Updated"}])
223
+ expect(subject.publication_year).to eq("2018")
224
+ expect(subject.publisher).to eq("MDPI AG")
225
+ expect(subject.agency).to eq("Crossref")
226
+ end
227
+
213
228
  it "multiple titles" do
214
229
  input = "https://doi.org/10.4000/dms.865"
215
230
  subject = Bolognese::Metadata.new(input: input)
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: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
@@ -825,6 +825,8 @@ files:
825
825
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/date_in_future.yml
826
826
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article.yml
827
827
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_with.yml
828
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/missing_creator.yml
829
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_t.yml
828
830
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles.yml
829
831
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml
830
832
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml