bolognese 0.10.7 → 0.10.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5398e40d11a911c0c3293208760a0a8ffe166bc07b53650f1c1e5e7f690d8080
4
- data.tar.gz: adacb341706bc8896de717878e8925be25c4cd51b947852c01dde72d7063a9e9
3
+ metadata.gz: b85cf1dfd09bab9b2d00697ed1f2d431e8ccf3e2f7a354226e6b6a300be29608
4
+ data.tar.gz: 9a6de7f8303c082cbd324d708d8f9447ae8a106544f962295a492f26e3495b22
5
5
  SHA512:
6
- metadata.gz: ace8d10e6469de1d9571f1e377305d41a498673ef9a5940bcc2695e0f596ede0ae385181fc43a7b2fbcdd88fc8f131fe2931f888e0a67e45d1b9c521573b1ed1
7
- data.tar.gz: 3166e318b7482473f896c26f8b40c383ad6f8bdc879f5abaa8a0c1362c517b60e3e060725090715c925033b31e001570ef5e508ba8411c4df1216a2adbcc3f25
6
+ metadata.gz: 40545d59245f933e7a14279ab0df045dd24fd9dc06f30b485d0e03bb2184acf51a481d64cf7e04ce5a56d08cd96304a21f444c4371783061730e94150c6a5fc6
7
+ data.tar.gz: bd6a93cea2fddc9a611e1ae894790941ff3eeef99d0930c814c007c239dacfab9c42d79966d4b6e964791dc7179a2c0d5a1f8a09d94ee79d6f6c3351f2fac9a1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.10.7)
4
+ bolognese (0.10.8)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -2,7 +2,8 @@ module Bolognese
2
2
  module Readers
3
3
  module BibtexReader
4
4
  BIB_TO_CP_TRANSLATIONS = {
5
- "article" => "article-journal"
5
+ "article" => "article-journal",
6
+ "phdthesis" => "thesis"
6
7
  }
7
8
 
8
9
  BIB_TO_RIS_TRANSLATIONS = {
@@ -19,50 +20,52 @@ module Bolognese
19
20
  }
20
21
 
21
22
  BIB_TO_SO_TRANSLATIONS = {
22
- "article" => "ScholarlyArticle"
23
+ "article" => "ScholarlyArticle",
24
+ "phdthesis" => "Thesis"
23
25
  }
24
26
 
25
27
  def read_bibtex(string: nil, **options)
26
28
  meta = string.present? ? BibTeX.parse(string).first : OpenStruct.new
27
29
 
28
30
  type = BIB_TO_SO_TRANSLATIONS[meta.type.to_s] || "ScholarlyArticle"
29
- doi = meta.doi.to_s
31
+ doi = meta.try(:doi)
30
32
 
31
- author = Array(meta.author).map do |a|
33
+ author = Array(meta.try(:author)).map do |a|
32
34
  { "type" => "Person",
33
35
  "name" => [a.first, a.last].join(" "),
34
36
  "givenName" => a.first,
35
37
  "familyName" => a.last }.compact
36
38
  end
37
39
 
38
- is_part_of = if meta.journal.present?
40
+ is_part_of = if meta.try(:journal).present?
39
41
  { "type" => "Periodical",
40
42
  "title" => meta.journal.to_s,
41
- "issn" => meta.issn.to_s.presence }.compact
43
+ "issn" => meta.try(:issn).to_s.presence }.compact
42
44
  else
43
45
  nil
44
46
  end
45
47
 
46
- page_first, page_last = meta.pages.to_s.split("-")
48
+ page_first, page_last = meta.try(:pages).to_s.split("-")
47
49
  state = doi.present? ? "findable" : "not_found"
48
50
 
49
51
  { "id" => normalize_doi(doi),
50
52
  "type" => type,
53
+ "bibtex_type" => meta.type.to_s,
51
54
  "citeproc_type" => BIB_TO_CP_TRANSLATIONS[meta.type.to_s] || "misc",
52
55
  "ris_type" => BIB_TO_RIS_TRANSLATIONS[meta.type.to_s] || "GEN",
53
56
  "resource_type_general" => Metadata::SO_TO_DC_TRANSLATIONS[type],
54
57
  "doi" => doi,
55
- "b_url" => meta.url.to_s,
56
- "title" => meta.title.to_s,
58
+ "b_url" => meta.try(:url).to_s,
59
+ "title" => meta.try(:title).to_s,
57
60
  "author" => author,
58
- "publisher" => meta.publisher.to_s.presence,
61
+ "publisher" => meta.try(:publisher).to_s.presence,
59
62
  "is_part_of" => is_part_of,
60
- "date_published" => meta.date.to_s.presence,
61
- "volume" => meta.volume.to_s.presence,
63
+ "date_published" => meta.try(:date).to_s.presence,
64
+ "volume" => meta.try(:volume).to_s.presence,
62
65
  "page_first" => page_first,
63
66
  "page_last" => page_last,
64
- "description" => { "text" => meta.field?(:abstract) && sanitize(meta.abstract.to_s).presence },
65
- "license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence },
67
+ "description" => { "text" => meta.try(:abstract) && sanitize(meta.abstract.to_s).presence },
68
+ "license" => { "id" => meta.try(:copyright).to_s.presence },
66
69
  "state" => state
67
70
  }
68
71
  end
@@ -2,34 +2,6 @@ module Bolognese
2
2
  module Readers
3
3
  module CrossrefReader
4
4
  # CrossRef types from https://api.crossref.org/types
5
- CR_TO_SO_TRANSLATIONS = {
6
- "Proceedings" => nil,
7
- "ReferenceBook" => "Book",
8
- "JournalIssue" => "PublicationIssue",
9
- "ProceedingsArticle" => nil,
10
- "Other" => "CreativeWork",
11
- "Dissertation" => "Thesis",
12
- "Dataset" => "Dataset",
13
- "EditedBook" => "Book",
14
- "JournalArticle" => "ScholarlyArticle",
15
- "Journal" => nil,
16
- "Report" => nil,
17
- "BookSeries" => nil,
18
- "ReportSeries" => nil,
19
- "BookTrack" => nil,
20
- "Standard" => nil,
21
- "BookSection" => nil,
22
- "BookPart" => nil,
23
- "Book" => "Book",
24
- "BookChapter" => "Chapter",
25
- "StandardSeries" => nil,
26
- "Monograph" => "Book",
27
- "Component" => "CreativeWork",
28
- "ReferenceEntry" => nil,
29
- "JournalVolume" => "PublicationVolume",
30
- "BookSet" => nil,
31
- "PostedContent" => "ScholarlyArticle"
32
- }
33
5
 
34
6
  CR_TO_BIB_TRANSLATIONS = {
35
7
  "Proceedings" => "proceedings",
@@ -127,7 +99,7 @@ module Bolognese
127
99
  end
128
100
 
129
101
  additional_type = (additional_type || model).to_s.underscore.camelize.presence
130
- type = CR_TO_SO_TRANSLATIONS[additional_type] || "ScholarlyArticle"
102
+ type = Bolognese::Utils::CR_TO_SO_TRANSLATIONS[additional_type] || "ScholarlyArticle"
131
103
 
132
104
  doi = bibliographic_metadata.dig("doi_data", "doi").to_s.downcase.presence #|| doi_from_url(options[:id])
133
105
 
@@ -57,7 +57,8 @@ module Bolognese
57
57
 
58
58
  doi = doi_from_url(id)
59
59
  resource_type_general = meta.dig("resourceType", "resourceTypeGeneral")
60
- type = Bolognese::Utils::DC_TO_SO_TRANSLATIONS[resource_type_general.to_s.dasherize] || "CreativeWork"
60
+ additional_type = meta.fetch("resourceType", {}).fetch("__content__", nil)
61
+ type = Bolognese::Utils::CR_TO_SO_TRANSLATIONS[additional_type.to_s.underscore.camelcase] || Bolognese::Utils::DC_TO_SO_TRANSLATIONS[resource_type_general.to_s.dasherize] || "CreativeWork"
61
62
  title = Array.wrap(meta.dig("titles", "title")).map do |r|
62
63
  if r.is_a?(String)
63
64
  sanitize(r)
@@ -92,8 +93,8 @@ module Bolognese
92
93
 
93
94
  { "id" => id,
94
95
  "type" => type,
95
- "additional_type" => meta.fetch("resourceType", {}).fetch("__content__", nil),
96
- "citeproc_type" => Bolognese::Utils::DC_TO_CP_TRANSLATIONS[resource_type_general.to_s.dasherize] || "article",
96
+ "additional_type" => additional_type,
97
+ "citeproc_type" => Bolognese::Utils::SO_TO_CP_TRANSLATIONS[type] || "article",
97
98
  "bibtex_type" => Bolognese::Utils::SO_TO_BIB_TRANSLATIONS[type] || "misc",
98
99
  "ris_type" => Bolognese::Utils::DC_TO_RIS_TRANSLATIONS[resource_type_general.to_s.dasherize] || "GEN",
99
100
  "resource_type_general" => resource_type_general,
@@ -7,6 +7,7 @@ module Bolognese
7
7
  "CTLG" => "DataCatalog",
8
8
  "DATA" => "Dataset",
9
9
  "FIGURE" => "ImageObject",
10
+ "THES" => "Thesis",
10
11
  "MPCT" => "Movie",
11
12
  "JOUR" => "ScholarlyArticle",
12
13
  "COMP" => "SoftwareSourceCode",
@@ -39,6 +40,8 @@ module Bolognese
39
40
  doi = validate_doi(meta.fetch("DO", nil))
40
41
  author = Array.wrap(meta.fetch("AU", nil)).map { |a| { "name" => a } }
41
42
  container_title = meta.fetch("T2", nil)
43
+ date_parts = meta.fetch("PY", nil).to_s.split("/")
44
+ date_published = get_date_from_parts(*date_parts)
42
45
  is_part_of = if container_title.present?
43
46
  { "type" => "Periodical",
44
47
  "title" => container_title,
@@ -61,7 +64,7 @@ module Bolognese
61
64
  "publisher" => meta.fetch("PB", nil),
62
65
  "is_part_of" => is_part_of,
63
66
  "date_created" => meta.fetch("Y1", nil),
64
- "date_published" => meta.fetch("PY", nil),
67
+ "date_published" => date_published,
65
68
  "date_accessed" => meta.fetch("Y2", nil),
66
69
  "description" => meta.fetch("AB", nil).present? ? { "text" => sanitize(meta.fetch("AB")) } : nil,
67
70
  "volume" => meta.fetch("VL", nil),
@@ -78,7 +81,7 @@ module Bolognese
78
81
  h = Hash.new { |h,k| h[k] = [] }
79
82
  string.split("\n").reduce(h) do |sum, line|
80
83
  k, v = line.split(" - ")
81
- h[k] << v
84
+ h[k.strip] << v
82
85
  sum
83
86
  end.map { |k,v| [k, v.unwrap] }.to_h.compact
84
87
  end
@@ -70,6 +70,35 @@ module Bolognese
70
70
  "BookSet" => nil
71
71
  }
72
72
 
73
+ CR_TO_SO_TRANSLATIONS = {
74
+ "Proceedings" => nil,
75
+ "ReferenceBook" => "Book",
76
+ "JournalIssue" => "PublicationIssue",
77
+ "ProceedingsArticle" => nil,
78
+ "Other" => "CreativeWork",
79
+ "Dissertation" => "Thesis",
80
+ "Dataset" => "Dataset",
81
+ "EditedBook" => "Book",
82
+ "JournalArticle" => "ScholarlyArticle",
83
+ "Journal" => nil,
84
+ "Report" => nil,
85
+ "BookSeries" => nil,
86
+ "ReportSeries" => nil,
87
+ "BookTrack" => nil,
88
+ "Standard" => nil,
89
+ "BookSection" => nil,
90
+ "BookPart" => nil,
91
+ "Book" => "Book",
92
+ "BookChapter" => "Chapter",
93
+ "StandardSeries" => nil,
94
+ "Monograph" => "Book",
95
+ "Component" => "CreativeWork",
96
+ "ReferenceEntry" => nil,
97
+ "JournalVolume" => "PublicationVolume",
98
+ "BookSet" => nil,
99
+ "PostedContent" => "ScholarlyArticle"
100
+ }
101
+
73
102
  CR_TO_JATS_TRANSLATIONS = {
74
103
  "Proceedings" => "working-paper",
75
104
  "ReferenceBook" => "book",
@@ -113,6 +142,7 @@ module Bolognese
113
142
  "Movie" => "Audiovisual",
114
143
  "PublicationIssue" => "Text",
115
144
  "ScholarlyArticle" => "Text",
145
+ "Thesis" => "Text",
116
146
  "Service" => "Service",
117
147
  "SoftwareSourceCode" => "Software",
118
148
  "VideoObject" => "Audiovisual",
@@ -157,6 +187,7 @@ module Bolognese
157
187
  "PublicationIssue" => nil,
158
188
  "ScholarlyArticle" => "article-journal",
159
189
  "Service" => nil,
190
+ "Thesis" => "thesis",
160
191
  "VideoObject" => "broadcast",
161
192
  "WebPage" => "webpage",
162
193
  "WebSite" => "webpage"
@@ -231,6 +262,7 @@ module Bolognese
231
262
  SO_TO_BIB_TRANSLATIONS = {
232
263
  "Article" => "article",
233
264
  "AudioObject" => "misc",
265
+ "Thesis" => "phdthesis",
234
266
  "Blog" => "misc",
235
267
  "BlogPosting" => "article",
236
268
  "Collection" => "misc",
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.10.7"
2
+ VERSION = "0.10.8"
3
3
  end
@@ -0,0 +1,14 @@
1
+ @phdthesis{dbbe66e459a446a0b6fddf42d3401ccb,
2
+ title = "A multiscale analysis of the urban heat island effect: from city averaged temperatures to the energy demand of individual buildings",
3
+ abstract = "Designing the climates of cities",
4
+ author = "Y. Toparlar",
5
+ note = "Proefschrift",
6
+ year = "2018",
7
+ month = "4",
8
+ day = "25",
9
+ language = "English",
10
+ isbn = "978-90-386-4503-2",
11
+ series = "Bouwstenen",
12
+ publisher = "Technische Universiteit Eindhoven",
13
+ school = "Department of Built Environment",
14
+ }
@@ -0,0 +1,15 @@
1
+ TY - THES
2
+ T1 - A multiscale analysis of the urban heat island effect
3
+ T2 - from city averaged temperatures to the energy demand of individual buildings
4
+ AU - Toparlar,Y.
5
+ N1 - Proefschrift
6
+ PY - 2018/4/25
7
+ Y1 - 2018/4/25
8
+ N2 - Designing the climates of cities
9
+ AB - Designing the climates of cities
10
+ M3 - Phd Thesis 1 (Research TU/e / Graduation TU/e)
11
+ SN - 978-90-386-4503-2
12
+ T3 - Bouwstenen
13
+ PB - Technische Universiteit Eindhoven
14
+ CY - Eindhoven
15
+ ER -
@@ -0,0 +1,103 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://app.datacite.org/prefixes/10.3204
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma 4.0.5 - 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: OK
18
+ headers:
19
+ Date:
20
+ - Fri, 18 May 2018 10:11:23 GMT
21
+ Content-Type:
22
+ - application/vnd.api+json; charset=utf-8
23
+ Connection:
24
+ - keep-alive
25
+ Status:
26
+ - 200 OK
27
+ X-Anonymous-Consumer:
28
+ - 'true'
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ Vary:
32
+ - Accept-Encoding, Origin
33
+ X-Request-Id:
34
+ - c7d2c58a-8a32-4654-865d-d0ee4eda062a
35
+ Etag:
36
+ - W/"b6b43f1308b8af8e7954484fe743e2c0"
37
+ X-Runtime:
38
+ - '0.018615'
39
+ X-Powered-By:
40
+ - Phusion Passenger 5.3.1
41
+ Server:
42
+ - nginx/1.14.0 + Phusion Passenger 5.3.1
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: '{"data":{"id":"10.3204","type":"prefixes","attributes":{"registration-agency":"DataCite","created":"2010-01-01T00:00:00.000Z","updated":null},"relationships":{"clients":{"data":[{"id":"tib.desy","type":"clients"}]},"providers":{"data":[{"id":"tib","type":"providers"}]}}},"included":[{"id":"tib.desy","type":"clients","attributes":{"name":"DESY
46
+ - Deutsches Elektronen-Synchrotron","symbol":"TIB.DESY","year":2011,"contact-name":"Kirsten
47
+ Sachs","contact-email":"Kirsten.Sachs@desy.de","domains":"desy.de,cern.ch","url":null,"is-active":true,"has-password":true,"created":"2011-08-12T09:39:17Z","updated":"2018-05-18T02:30:08Z"},"relationships":{"prefixes":{"meta":{}},"provider":{"meta":{}},"repository":{"meta":{}}}},{"id":"tib","type":"providers","attributes":{"name":"German
48
+ National Library of Science and Technology","symbol":"TIB","website":"http://www.tib.eu","contact-name":"Steffen
49
+ Krentz","contact-email":"steffen.krentz@tib.eu","phone":"+49 511 762 17642","description":"The
50
+ TIB is the German National Library for all areas of engineering as well as
51
+ architecture, chemistry, information technology, mathematics and physics.
52
+ We are the world''s largest specialised library for science and technology
53
+ and are part of the German research infrastructure. Our function is the comprehensive
54
+ procurement and archival storage of technical scientific literature from all
55
+ over the world. TIB was the first DOI registration agency for primary data
56
+ worldwide. We have been providing DOI registration services since 2005 and
57
+ we now work directly with over 40 data centres. TIB is one of the founding
58
+ members of DataCite and is currently the Business Office. We provide DOI registration
59
+ services for all German data centres in the fields of engineering, architecture,
60
+ chemistry, information technology, mathematics and physics. Our current focus
61
+ is on providing DOI names for primary data and grey literature.","country":"DE","logo-url":"https://assets.datacite.org/images/members/tib.png","institution-type":null,"is-active":true,"has-password":true,"joined":"2009-12-01","created":"2010-01-01T00:00:00.000Z","updated":"2018-05-18T02:25:51.000Z"},"relationships":{"clients":{"meta":{}},"prefixes":{"meta":{}}}}]}'
62
+ http_version:
63
+ recorded_at: Fri, 18 May 2018 10:11:23 GMT
64
+ - request:
65
+ method: get
66
+ uri: https://search.datacite.org/api?fl=doi,url,xml,state,allocator_symbol,datacentre_symbol,media,minted,updated&q=doi:10.3204/desy-2014-01645&wt=json
67
+ body:
68
+ encoding: US-ASCII
69
+ string: ''
70
+ headers:
71
+ User-Agent:
72
+ - Maremma 4.0.5 - https://github.com/datacite/maremma
73
+ Accept:
74
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
75
+ response:
76
+ status:
77
+ code: 200
78
+ message: OK
79
+ headers:
80
+ Date:
81
+ - Fri, 18 May 2018 10:11:23 GMT
82
+ Content-Type:
83
+ - application/json;charset=UTF-8
84
+ Connection:
85
+ - keep-alive
86
+ Server:
87
+ - nginx/1.10.3 (Ubuntu)
88
+ Access-Control-Allow-Origin:
89
+ - "*"
90
+ Access-Control-Allow-Methods:
91
+ - GET, POST, PUT, DELETE, OPTIONS
92
+ Access-Control-Allow-Headers:
93
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
94
+ Access-Control-Expose-Headers:
95
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
96
+ body:
97
+ encoding: ASCII-8BIT
98
+ string: '{"responseHeader":{"status":0,"QTime":0},"response":{"numFound":1,"start":0,"docs":[{"datacentre_symbol":"TIB.DESY","xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC0zL21ldGFkYXRhLnhzZCI+PGNvbnRyaWJ1dG9ycz48Y29udHJpYnV0b3IgY29udHJpYnV0b3JUeXBlPSJDb250YWN0UGVyc29uIj48Y29udHJpYnV0b3JOYW1lPkNvbnJhZCwgSGVpa288L2NvbnRyaWJ1dG9yTmFtZT48L2NvbnRyaWJ1dG9yPjxjb250cmlidXRvciBjb250cmlidXRvclR5cGU9IlN1cGVydmlzb3IiPjxjb250cmlidXRvck5hbWU+R3J1ZWJlbCwgR2VyaGFyZDwvY29udHJpYnV0b3JOYW1lPjxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZyI+MDAwMC0wMDAyLTg2MzMtODIzNDwvbmFtZUlkZW50aWZpZXI+PGFmZmlsaWF0aW9uPkRldXRzY2hlcyBFbGVrdHJvbmVuLVN5bmNocm90cm9uPC9hZmZpbGlhdGlvbj48L2NvbnRyaWJ1dG9yPjwvY29udHJpYnV0b3JzPjxkYXRlcz48ZGF0ZSBkYXRlVHlwZT0iSXNzdWVkIj4yMDE0PC9kYXRlPjxkYXRlIGRhdGVUeXBlPSJDb3B5cmlnaHRlZCI+MjAxNDwvZGF0ZT48ZGF0ZSBkYXRlVHlwZT0iQ3JlYXRlZCI+MjAwOS0xMC0wMS8yMDE0LTAxLTIzPC9kYXRlPjwvZGF0ZXM+PGRlc2NyaXB0aW9ucz48ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJTZXJpZXNJbmZvcm1hdGlvbiI+VW5pdmVyc2l0eSBvZiBIYW1idXJnLCBEaXNzLiwgMjAxNDsgSGFtYnVyZyA6IFVuaXZlcnNpdHkgb2YgSGFtYnVyZywgMTUyIHBwLiAoMjAxNCkuID0gVW5pdmVyc2l0eSBvZiBIYW1idXJnLCBEaXNzLiwgMjAxNDwvZGVzY3JpcHRpb24+PGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iQWJzdHJhY3QiPkluIHRoaXMgd29yayB0aGUgc3RhdGljIGFuZCBkeW5hbWljYWwgcHJvcGVydGllcyBvZiB0aGUgZ2xhc3MgZm9ybWVycyBwb2x5cHJvcHlsZW5lIGdseWNvbCBhbmQgZGlidXR5bCBwaHRoYWxhdGUgYXJlIHN0dWRpZWQgaW4gdGhlIHN1cGVyY29vbGVkIHN0YXRlLiBDb2xsb2lkYWwgdHJhY2VyIHBhcnRpY2xlcyBzdXNwZW5kZWQgaW4gdGhlc2UgZ2xhc3MgZm9ybWVycyBhbGxvdyB0aGUgaW52ZXN0aWdhdGlvbiBvZiB0aGVpciBkeW5hbWljcyB3aXRoIGNvaGVyZW50IHN5bmNocm90cm9uIHJhZGlhdGlvbiBieSBtZWFucyBvZiBYLXJheSBwaG90b24gY29ycmVsYXRpb24gc3BlY3Ryb3Njb3B5LiBUaGUgc3RhdGljIHN0cnVjdHVyZSBmYWN0b3JzLCB0aGUgcmVsYXhhdGlvbiB0aW1lcyBhbmQgdGhlIGRpc3BlcnNpb24gcmVsYXRpb25zIG9mIHRoZSB0cmFjZXIgcGFydGljbGVzIHdlcmUgZGV0ZXJtaW5lZCBhcyBmdW5jdGlvbiBvZiB0aGUgc29sdmVudCB0ZW1wZXJhdHVyZS4gVGhlIHJlc3VsdHMgc2hvdyB0aGF0IHRoZSBuYXR1cmUgb2YgdGhlIHBhcnRpY2xlcyBkeW5hbWljcyBpbiB0aGUgZ2xhc3MgZm9ybWVyIGNoYW5nZXMgY2xvc2UgdG8gdGhlIGdsYXNzIHRyYW5zaXRpb24gdGVtcGVyYXR1cmUgKFRnKSBiZXR3ZWVuIDEuMDgg4oiSIDEuMTIgVGcuIFdoaWxlIHRoZSBzdGF0aWMgc3RydWN0dXJlIGZhY3RvciByZW1haW5zIHVuY2hhbmdlZCBpbiB0aGlzIHRlbXBlcmF0dXJlIHJhbmdlLCB0aGUgcGFydGljbGUgZHluYW1pY3MgY2hhbmdlcyBmcm9tIGZyZWUgZGlmZnVzaW9uIGF0IFQgJmd0OyAxLjEyIFRnIHRvIGh5cGVyIGRpZmZ1c2l2ZSBhbmQgY29ycmVsYXRlZCBwYXJ0aWNsZSBtb3Rpb24gYXQgVCAmbHQ7IDEuMDggVGcuIEJ5IGNvbXBhcmluZyBzYW1wbGVzIG9mIGRpZmZlcmVudCBwYXJ0aWNsZSBzaXplcyBhbmQgY29uY2VudHJhdGlvbnMgaXQgYmVjb21lcyBldmlkZW50IHRoYXQgdGhpcyBjaGFuZ2UgaW4gdGhlIGR5bmFtaWNzIGlzIHJlbGF0ZWQgdG8gY2hhbmdlcyBvZiB0aGUgc29sdmVudCBwcm9wZXJ0aWVzLiBUaGVzZSBjaGFuZ2VzIGFyZSBhY2NvbXBhbmllZCBieSBhbiBpbmNyZWFzaW5nIGhldGVyb2dlbmVpdHkgaW4gdGhlIGR5bmFtaWNzIG9mIHRoZSB0cmFjZXIgcGFydGljbGVzLiBUaGUgZmluZGluZ3MgYXJlIGluIGFncmVlbWVudCB3aXRoIGFuIGludGVycHJldGF0aW9uIHRoYXQgZG9tYWlucyBvZiBjb3JyZWxhdGVkIGR5bmFtaWNzIGluIHRoZSBzdXBlcmNvb2xlZCBnbGFzcyBmb3JtZXJzIGdyb3cgaW4gc2l6ZSB3aXRoIGRlY3JlYXNpbmcgdGVtcGVyYXR1cmUuPC9kZXNjcmlwdGlvbj48ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJPdGhlciI+UHVibGlzaGVkIGJ5IFVuaXZlcnNpdHkgb2YgSGFtYnVyZywgSGFtYnVyZzwvZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbnM+PGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuMzIwNC9ERVNZLTIwMTQtMDE2NDU8L2lkZW50aWZpZXI+PGxhbmd1YWdlPmVuPC9sYW5ndWFnZT48cHVibGljYXRpb25ZZWFyPjIwMTQ8L3B1YmxpY2F0aW9uWWVhcj48cHVibGlzaGVyPkRldXRzY2hlcyBFbGVrdHJvbmVuLVN5bmNocm90cm9uLCBERVNZLCBIYW1idXJnPC9wdWJsaXNoZXI+PHJlbGF0ZWRJZGVudGlmaWVycz48cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJJc0lkZW50aWNhbFRvIiByZWxhdGVkSWRlbnRpZmllclR5cGU9IlVSTiI+aHR0cDovL25ibi1yZXNvbHZpbmcuZGUvdXJuOm5ibjpkZTpnYnY6MTgtNjU5MDc8L3JlbGF0ZWRJZGVudGlmaWVyPjwvcmVsYXRlZElkZW50aWZpZXJzPjxyZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlR2VuZXJhbD0iVGV4dCI+RGlzc2VydGF0aW9uPC9yZXNvdXJjZVR5cGU+PHNpemVzPjxzaXplPnBhZ2VzIDE1Mjwvc2l6ZT48L3NpemVzPjxzdWJqZWN0cz48c3ViamVjdD5EaXNzZXJ0YXRpb248L3N1YmplY3Q+PC9zdWJqZWN0cz48dGl0bGVzPjx0aXRsZT5EeW5hbWljcyBvZiBjb2xsb2lkcyBpbiBtb2xlY3VsYXIgZ2xhc3MgZm9ybWluZyBsaXF1aWRzIHN0dWRpZWQgdmlhIFgtcmF5IHBob3RvbiBjb3JyZWxhdGlvbiBzcGVjdHJvc2NvcHk8L3RpdGxlPjwvdGl0bGVzPjxjcmVhdG9ycz48Y3JlYXRvcj48Y3JlYXRvck5hbWU+Q29ucmFkLCBIZWlrbzwvY3JlYXRvck5hbWU+PC9jcmVhdG9yPjwvY3JlYXRvcnM+PC9yZXNvdXJjZT4=","allocator_symbol":"TIB","minted":"2018-01-25T13:51:27Z","state":"","updated":"2018-01-25T13:51:27Z","doi":"10.3204/DESY-2014-01645"}]}}
99
+
100
+ '
101
+ http_version:
102
+ recorded_at: Fri, 18 May 2018 10:11:23 GMT
103
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,37 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.crossref.org/openurl/?format=unixref&id=doi:10.1101/097196&noredirect=true&pid=tech@datacite.org
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma 4.0.5 - https://github.com/datacite/maremma
12
+ Accept:
13
+ - text/xml
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - Apache-Coyote/1.1
21
+ Crossref-Deployment-Name:
22
+ - qs5-1
23
+ Content-Type:
24
+ - text/xml;charset=UTF-8
25
+ Content-Language:
26
+ - en-US
27
+ Date:
28
+ - Fri, 18 May 2018 09:45:27 GMT
29
+ Connection:
30
+ - close
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGRvaV9yZWNvcmRzPg0KICA8ZG9pX3JlY29yZCBvd25lcj0iMTAuMTEwMSIgdGltZXN0YW1wPSIyMDE3LTEwLTEwIDAxOjEwOjQ5Ij4NCiAgICA8Y3Jvc3NyZWY+DQogICAgICA8cG9zdGVkX2NvbnRlbnQgdHlwZT0icHJlcHJpbnQiIGxhbmd1YWdlPSJlbiIgbWV0YWRhdGFfZGlzdHJpYnV0aW9uX29wdHM9ImFueSI+DQogICAgICAgIDxncm91cF90aXRsZT5TY2llbnRpZmljIENvbW11bmljYXRpb24gYW5kIEVkdWNhdGlvbjwvZ3JvdXBfdGl0bGU+DQogICAgICAgIDxjb250cmlidXRvcnM+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImZpcnN0Ij4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPk1hcnRpbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkZlbm5lcjwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0xNDE5LTI0MDU8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+TWVyY8OoPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Q3Jvc2FzPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTEzMDQtMTkzOTwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5KZWZmcmV5PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+R3JldGhlPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTUyMTItNzA1MjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5EYXZpZDwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPktlbm5lZHk8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItOTM3Ny0wNzk3PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkhlbm5pbmc8L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5IZXJtamFrb2I8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtODQ3OS0wMjYyPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlBoaWxpcHBlPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Um9jY2EtU2VycmE8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtOTg1My01NjY4PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkd1c3Rhdm88L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5EdXJhbmQ8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMjE4OC0yNTcwPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlJvYmluPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+QmVyam9uPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTE3MzEtNTM0NjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5TZWJhc3RpYW48L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5LYXJjaGVyPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTgyNDktNzM4ODwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXJ5YW5uPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+TWFydG9uZTwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi04NDA2LTM4NzE8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+VGltb3RoeTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkNsYXJrPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTQwNjAtNzM2MDwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgPC9jb250cmlidXRvcnM+DQogICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgPHRpdGxlPkEgRGF0YSBDaXRhdGlvbiBSb2FkbWFwIGZvciBTY2hvbGFybHkgRGF0YSBSZXBvc2l0b3JpZXM8L3RpdGxlPg0KICAgICAgICA8L3RpdGxlcz4NCiAgICAgICAgPHBvc3RlZF9kYXRlPg0KICAgICAgICAgIDxtb250aD4xMjwvbW9udGg+DQogICAgICAgICAgPGRheT4yODwvZGF5Pg0KICAgICAgICAgIDx5ZWFyPjIwMTY8L3llYXI+DQogICAgICAgIDwvcG9zdGVkX2RhdGU+DQogICAgICAgIDxhY2NlcHRhbmNlX2RhdGU+DQogICAgICAgICAgPG1vbnRoPjEwPC9tb250aD4NCiAgICAgICAgICA8ZGF5PjA5PC9kYXk+DQogICAgICAgICAgPHllYXI+MjAxNzwveWVhcj4NCiAgICAgICAgPC9hY2NlcHRhbmNlX2RhdGU+DQogICAgICAgIDxpbnN0aXR1dGlvbj4NCiAgICAgICAgICA8aW5zdGl0dXRpb25fbmFtZT5iaW9SeGl2PC9pbnN0aXR1dGlvbl9uYW1lPg0KICAgICAgICA8L2luc3RpdHV0aW9uPg0KICAgICAgICA8aXRlbV9udW1iZXIgaXRlbV9udW1iZXJfdHlwZT0icGlzYSI+YmlvcnhpdjswOTcxOTZ2MjwvaXRlbV9udW1iZXI+DQogICAgICAgIDxhYnN0cmFjdD4NCiAgICAgICAgICA8cD5UaGlzIGFydGljbGUgcHJlc2VudHMgYSBwcmFjdGljYWwgcm9hZG1hcCBmb3Igc2Nob2xhcmx5IGRhdGEgcmVwb3NpdG9yaWVzIHRvIGltcGxlbWVudCBkYXRhIGNpdGF0aW9uIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgSm9pbnQgRGVjbGFyYXRpb24gb2YgRGF0YSBDaXRhdGlvbiBQcmluY2lwbGVzLCBhIHN5bm9wc2lzIGFuZCBoYXJtb25pemF0aW9uIG9mIHRoZSByZWNvbW1lbmRhdGlvbnMgb2YgbWFqb3Igc2NpZW5jZSBwb2xpY3kgYm9kaWVzLiBUaGUgcm9hZG1hcCB3YXMgZGV2ZWxvcGVkIGJ5IHRoZSBSZXBvc2l0b3JpZXMgRXhwZXJ0IEdyb3VwLCBhcyBwYXJ0IG9mIHRoZSBEYXRhIENpdGF0aW9uIEltcGxlbWVudGF0aW9uIFBpbG90IChEQ0lQKSBwcm9qZWN0LCBhbiBpbml0aWF0aXZlIG9mIEZPUkNFMTEub3JnIGFuZCB0aGUgTklIIEJpb0NBRERJRSAoaHR0cHM6Ly9iaW9jYWRkaWUub3JnKSBwcm9ncmFtLiBUaGUgcm9hZG1hcCBtYWtlcyAxMSBzcGVjaWZpYyByZWNvbW1lbmRhdGlvbnMsIGdyb3VwZWQgaW50byB0aHJlZSBwaGFzZXMgb2YgaW1wbGVtZW50YXRpb246IGEpIHJlcXVpcmVkIHN0ZXBzIG5lZWRlZCB0byBzdXBwb3J0IHRoZSBKb2ludCBEZWNsYXJhdGlvbiBvZiBEYXRhIENpdGF0aW9uIFByaW5jaXBsZXMsIGIpIHJlY29tbWVuZGVkIHN0ZXBzIHRoYXQgZmFjaWxpdGF0ZSBhcnRpY2xlL2RhdGEgcHVibGljYXRpb24gd29ya2Zsb3dzLCBhbmQgYykgb3B0aW9uYWwgc3RlcHMgdGhhdCBmdXJ0aGVyIGltcHJvdmUgZGF0YSBjaXRhdGlvbiBzdXBwb3J0IHByb3ZpZGVkIGJ5IGRhdGEgcmVwb3NpdG9yaWVzLjwvcD4NCiAgICAgICAgPC9hYnN0cmFjdD4NCiAgICAgICAgPGRvaV9kYXRhPg0KICAgICAgICAgIDxkb2k+MTAuMTEwMS8wOTcxOTY8L2RvaT4NCiAgICAgICAgICA8dGltZXN0YW1wPjIwMTcxMDA5MjIxMDIzNDEwMDA8L3RpbWVzdGFtcD4NCiAgICAgICAgICA8cmVzb3VyY2U+aHR0cDovL2Jpb3J4aXYub3JnL2xvb2t1cC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cHM6Ly9zeW5kaWNhdGlvbi5oaWdod2lyZS5vcmcvY29udGVudC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgIDwvcG9zdGVkX2NvbnRlbnQ+DQogICAgPC9jcm9zc3JlZj4NCiAgPC9kb2lfcmVjb3JkPg0KPC9kb2lfcmVjb3Jkcz4=
35
+ http_version:
36
+ recorded_at: Fri, 18 May 2018 09:45:27 GMT
37
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,37 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.crossref.org/openurl/?format=unixref&id=doi:10.1101/097196&noredirect=true&pid=tech@datacite.org
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma 4.0.5 - https://github.com/datacite/maremma
12
+ Accept:
13
+ - text/xml
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - Apache-Coyote/1.1
21
+ Crossref-Deployment-Name:
22
+ - qs5-1
23
+ Content-Type:
24
+ - text/xml;charset=UTF-8
25
+ Content-Language:
26
+ - en-US
27
+ Date:
28
+ - Fri, 18 May 2018 09:45:27 GMT
29
+ Connection:
30
+ - close
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGRvaV9yZWNvcmRzPg0KICA8ZG9pX3JlY29yZCBvd25lcj0iMTAuMTEwMSIgdGltZXN0YW1wPSIyMDE3LTEwLTEwIDAxOjEwOjQ5Ij4NCiAgICA8Y3Jvc3NyZWY+DQogICAgICA8cG9zdGVkX2NvbnRlbnQgdHlwZT0icHJlcHJpbnQiIGxhbmd1YWdlPSJlbiIgbWV0YWRhdGFfZGlzdHJpYnV0aW9uX29wdHM9ImFueSI+DQogICAgICAgIDxncm91cF90aXRsZT5TY2llbnRpZmljIENvbW11bmljYXRpb24gYW5kIEVkdWNhdGlvbjwvZ3JvdXBfdGl0bGU+DQogICAgICAgIDxjb250cmlidXRvcnM+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImZpcnN0Ij4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPk1hcnRpbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkZlbm5lcjwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0xNDE5LTI0MDU8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+TWVyY8OoPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Q3Jvc2FzPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTEzMDQtMTkzOTwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5KZWZmcmV5PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+R3JldGhlPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTUyMTItNzA1MjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5EYXZpZDwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPktlbm5lZHk8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItOTM3Ny0wNzk3PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkhlbm5pbmc8L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5IZXJtamFrb2I8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtODQ3OS0wMjYyPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlBoaWxpcHBlPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Um9jY2EtU2VycmE8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtOTg1My01NjY4PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkd1c3Rhdm88L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5EdXJhbmQ8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMjE4OC0yNTcwPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlJvYmluPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+QmVyam9uPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTE3MzEtNTM0NjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5TZWJhc3RpYW48L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5LYXJjaGVyPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTgyNDktNzM4ODwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXJ5YW5uPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+TWFydG9uZTwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi04NDA2LTM4NzE8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+VGltb3RoeTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkNsYXJrPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTQwNjAtNzM2MDwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgPC9jb250cmlidXRvcnM+DQogICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgPHRpdGxlPkEgRGF0YSBDaXRhdGlvbiBSb2FkbWFwIGZvciBTY2hvbGFybHkgRGF0YSBSZXBvc2l0b3JpZXM8L3RpdGxlPg0KICAgICAgICA8L3RpdGxlcz4NCiAgICAgICAgPHBvc3RlZF9kYXRlPg0KICAgICAgICAgIDxtb250aD4xMjwvbW9udGg+DQogICAgICAgICAgPGRheT4yODwvZGF5Pg0KICAgICAgICAgIDx5ZWFyPjIwMTY8L3llYXI+DQogICAgICAgIDwvcG9zdGVkX2RhdGU+DQogICAgICAgIDxhY2NlcHRhbmNlX2RhdGU+DQogICAgICAgICAgPG1vbnRoPjEwPC9tb250aD4NCiAgICAgICAgICA8ZGF5PjA5PC9kYXk+DQogICAgICAgICAgPHllYXI+MjAxNzwveWVhcj4NCiAgICAgICAgPC9hY2NlcHRhbmNlX2RhdGU+DQogICAgICAgIDxpbnN0aXR1dGlvbj4NCiAgICAgICAgICA8aW5zdGl0dXRpb25fbmFtZT5iaW9SeGl2PC9pbnN0aXR1dGlvbl9uYW1lPg0KICAgICAgICA8L2luc3RpdHV0aW9uPg0KICAgICAgICA8aXRlbV9udW1iZXIgaXRlbV9udW1iZXJfdHlwZT0icGlzYSI+YmlvcnhpdjswOTcxOTZ2MjwvaXRlbV9udW1iZXI+DQogICAgICAgIDxhYnN0cmFjdD4NCiAgICAgICAgICA8cD5UaGlzIGFydGljbGUgcHJlc2VudHMgYSBwcmFjdGljYWwgcm9hZG1hcCBmb3Igc2Nob2xhcmx5IGRhdGEgcmVwb3NpdG9yaWVzIHRvIGltcGxlbWVudCBkYXRhIGNpdGF0aW9uIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgSm9pbnQgRGVjbGFyYXRpb24gb2YgRGF0YSBDaXRhdGlvbiBQcmluY2lwbGVzLCBhIHN5bm9wc2lzIGFuZCBoYXJtb25pemF0aW9uIG9mIHRoZSByZWNvbW1lbmRhdGlvbnMgb2YgbWFqb3Igc2NpZW5jZSBwb2xpY3kgYm9kaWVzLiBUaGUgcm9hZG1hcCB3YXMgZGV2ZWxvcGVkIGJ5IHRoZSBSZXBvc2l0b3JpZXMgRXhwZXJ0IEdyb3VwLCBhcyBwYXJ0IG9mIHRoZSBEYXRhIENpdGF0aW9uIEltcGxlbWVudGF0aW9uIFBpbG90IChEQ0lQKSBwcm9qZWN0LCBhbiBpbml0aWF0aXZlIG9mIEZPUkNFMTEub3JnIGFuZCB0aGUgTklIIEJpb0NBRERJRSAoaHR0cHM6Ly9iaW9jYWRkaWUub3JnKSBwcm9ncmFtLiBUaGUgcm9hZG1hcCBtYWtlcyAxMSBzcGVjaWZpYyByZWNvbW1lbmRhdGlvbnMsIGdyb3VwZWQgaW50byB0aHJlZSBwaGFzZXMgb2YgaW1wbGVtZW50YXRpb246IGEpIHJlcXVpcmVkIHN0ZXBzIG5lZWRlZCB0byBzdXBwb3J0IHRoZSBKb2ludCBEZWNsYXJhdGlvbiBvZiBEYXRhIENpdGF0aW9uIFByaW5jaXBsZXMsIGIpIHJlY29tbWVuZGVkIHN0ZXBzIHRoYXQgZmFjaWxpdGF0ZSBhcnRpY2xlL2RhdGEgcHVibGljYXRpb24gd29ya2Zsb3dzLCBhbmQgYykgb3B0aW9uYWwgc3RlcHMgdGhhdCBmdXJ0aGVyIGltcHJvdmUgZGF0YSBjaXRhdGlvbiBzdXBwb3J0IHByb3ZpZGVkIGJ5IGRhdGEgcmVwb3NpdG9yaWVzLjwvcD4NCiAgICAgICAgPC9hYnN0cmFjdD4NCiAgICAgICAgPGRvaV9kYXRhPg0KICAgICAgICAgIDxkb2k+MTAuMTEwMS8wOTcxOTY8L2RvaT4NCiAgICAgICAgICA8dGltZXN0YW1wPjIwMTcxMDA5MjIxMDIzNDEwMDA8L3RpbWVzdGFtcD4NCiAgICAgICAgICA8cmVzb3VyY2U+aHR0cDovL2Jpb3J4aXYub3JnL2xvb2t1cC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cHM6Ly9zeW5kaWNhdGlvbi5oaWdod2lyZS5vcmcvY29udGVudC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgIDwvcG9zdGVkX2NvbnRlbnQ+DQogICAgPC9jcm9zc3JlZj4NCiAgPC9kb2lfcmVjb3JkPg0KPC9kb2lfcmVjb3Jkcz4=
35
+ http_version:
36
+ recorded_at: Fri, 18 May 2018 09:45:27 GMT
37
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,37 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.crossref.org/openurl/?format=unixref&id=doi:10.1101/097196&noredirect=true&pid=tech@datacite.org
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma 4.0.5 - https://github.com/datacite/maremma
12
+ Accept:
13
+ - text/xml
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - Apache-Coyote/1.1
21
+ Crossref-Deployment-Name:
22
+ - qs3-1
23
+ Content-Type:
24
+ - text/xml;charset=UTF-8
25
+ Content-Language:
26
+ - en-US
27
+ Date:
28
+ - Fri, 18 May 2018 09:45:26 GMT
29
+ Connection:
30
+ - close
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGRvaV9yZWNvcmRzPg0KICA8ZG9pX3JlY29yZCBvd25lcj0iMTAuMTEwMSIgdGltZXN0YW1wPSIyMDE3LTEwLTEwIDAxOjEwOjQ5Ij4NCiAgICA8Y3Jvc3NyZWY+DQogICAgICA8cG9zdGVkX2NvbnRlbnQgdHlwZT0icHJlcHJpbnQiIGxhbmd1YWdlPSJlbiIgbWV0YWRhdGFfZGlzdHJpYnV0aW9uX29wdHM9ImFueSI+DQogICAgICAgIDxncm91cF90aXRsZT5TY2llbnRpZmljIENvbW11bmljYXRpb24gYW5kIEVkdWNhdGlvbjwvZ3JvdXBfdGl0bGU+DQogICAgICAgIDxjb250cmlidXRvcnM+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImZpcnN0Ij4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPk1hcnRpbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkZlbm5lcjwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0xNDE5LTI0MDU8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+TWVyY8OoPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Q3Jvc2FzPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTEzMDQtMTkzOTwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5KZWZmcmV5PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+R3JldGhlPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTUyMTItNzA1MjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5EYXZpZDwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPktlbm5lZHk8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItOTM3Ny0wNzk3PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkhlbm5pbmc8L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5IZXJtamFrb2I8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtODQ3OS0wMjYyPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlBoaWxpcHBlPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+Um9jY2EtU2VycmE8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtOTg1My01NjY4PC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPkd1c3Rhdm88L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5EdXJhbmQ8L3N1cm5hbWU+DQogICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMjE4OC0yNTcwPC9PUkNJRD4NCiAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgIDxnaXZlbl9uYW1lPlJvYmluPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+QmVyam9uPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTE3MzEtNTM0NjwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5TZWJhc3RpYW48L2dpdmVuX25hbWU+DQogICAgICAgICAgICA8c3VybmFtZT5LYXJjaGVyPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTgyNDktNzM4ODwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXJ5YW5uPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgPHN1cm5hbWU+TWFydG9uZTwvc3VybmFtZT4NCiAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi04NDA2LTM4NzE8L09SQ0lEPg0KICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgPGdpdmVuX25hbWU+VGltb3RoeTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgIDxzdXJuYW1lPkNsYXJrPC9zdXJuYW1lPg0KICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTQwNjAtNzM2MDwvT1JDSUQ+DQogICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgPC9jb250cmlidXRvcnM+DQogICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgPHRpdGxlPkEgRGF0YSBDaXRhdGlvbiBSb2FkbWFwIGZvciBTY2hvbGFybHkgRGF0YSBSZXBvc2l0b3JpZXM8L3RpdGxlPg0KICAgICAgICA8L3RpdGxlcz4NCiAgICAgICAgPHBvc3RlZF9kYXRlPg0KICAgICAgICAgIDxtb250aD4xMjwvbW9udGg+DQogICAgICAgICAgPGRheT4yODwvZGF5Pg0KICAgICAgICAgIDx5ZWFyPjIwMTY8L3llYXI+DQogICAgICAgIDwvcG9zdGVkX2RhdGU+DQogICAgICAgIDxhY2NlcHRhbmNlX2RhdGU+DQogICAgICAgICAgPG1vbnRoPjEwPC9tb250aD4NCiAgICAgICAgICA8ZGF5PjA5PC9kYXk+DQogICAgICAgICAgPHllYXI+MjAxNzwveWVhcj4NCiAgICAgICAgPC9hY2NlcHRhbmNlX2RhdGU+DQogICAgICAgIDxpbnN0aXR1dGlvbj4NCiAgICAgICAgICA8aW5zdGl0dXRpb25fbmFtZT5iaW9SeGl2PC9pbnN0aXR1dGlvbl9uYW1lPg0KICAgICAgICA8L2luc3RpdHV0aW9uPg0KICAgICAgICA8aXRlbV9udW1iZXIgaXRlbV9udW1iZXJfdHlwZT0icGlzYSI+YmlvcnhpdjswOTcxOTZ2MjwvaXRlbV9udW1iZXI+DQogICAgICAgIDxhYnN0cmFjdD4NCiAgICAgICAgICA8cD5UaGlzIGFydGljbGUgcHJlc2VudHMgYSBwcmFjdGljYWwgcm9hZG1hcCBmb3Igc2Nob2xhcmx5IGRhdGEgcmVwb3NpdG9yaWVzIHRvIGltcGxlbWVudCBkYXRhIGNpdGF0aW9uIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgSm9pbnQgRGVjbGFyYXRpb24gb2YgRGF0YSBDaXRhdGlvbiBQcmluY2lwbGVzLCBhIHN5bm9wc2lzIGFuZCBoYXJtb25pemF0aW9uIG9mIHRoZSByZWNvbW1lbmRhdGlvbnMgb2YgbWFqb3Igc2NpZW5jZSBwb2xpY3kgYm9kaWVzLiBUaGUgcm9hZG1hcCB3YXMgZGV2ZWxvcGVkIGJ5IHRoZSBSZXBvc2l0b3JpZXMgRXhwZXJ0IEdyb3VwLCBhcyBwYXJ0IG9mIHRoZSBEYXRhIENpdGF0aW9uIEltcGxlbWVudGF0aW9uIFBpbG90IChEQ0lQKSBwcm9qZWN0LCBhbiBpbml0aWF0aXZlIG9mIEZPUkNFMTEub3JnIGFuZCB0aGUgTklIIEJpb0NBRERJRSAoaHR0cHM6Ly9iaW9jYWRkaWUub3JnKSBwcm9ncmFtLiBUaGUgcm9hZG1hcCBtYWtlcyAxMSBzcGVjaWZpYyByZWNvbW1lbmRhdGlvbnMsIGdyb3VwZWQgaW50byB0aHJlZSBwaGFzZXMgb2YgaW1wbGVtZW50YXRpb246IGEpIHJlcXVpcmVkIHN0ZXBzIG5lZWRlZCB0byBzdXBwb3J0IHRoZSBKb2ludCBEZWNsYXJhdGlvbiBvZiBEYXRhIENpdGF0aW9uIFByaW5jaXBsZXMsIGIpIHJlY29tbWVuZGVkIHN0ZXBzIHRoYXQgZmFjaWxpdGF0ZSBhcnRpY2xlL2RhdGEgcHVibGljYXRpb24gd29ya2Zsb3dzLCBhbmQgYykgb3B0aW9uYWwgc3RlcHMgdGhhdCBmdXJ0aGVyIGltcHJvdmUgZGF0YSBjaXRhdGlvbiBzdXBwb3J0IHByb3ZpZGVkIGJ5IGRhdGEgcmVwb3NpdG9yaWVzLjwvcD4NCiAgICAgICAgPC9hYnN0cmFjdD4NCiAgICAgICAgPGRvaV9kYXRhPg0KICAgICAgICAgIDxkb2k+MTAuMTEwMS8wOTcxOTY8L2RvaT4NCiAgICAgICAgICA8dGltZXN0YW1wPjIwMTcxMDA5MjIxMDIzNDEwMDA8L3RpbWVzdGFtcD4NCiAgICAgICAgICA8cmVzb3VyY2U+aHR0cDovL2Jpb3J4aXYub3JnL2xvb2t1cC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cHM6Ly9zeW5kaWNhdGlvbi5oaWdod2lyZS5vcmcvY29udGVudC9kb2kvMTAuMTEwMS8wOTcxOTY8L3Jlc291cmNlPg0KICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgIDwvcG9zdGVkX2NvbnRlbnQ+DQogICAgPC9jcm9zc3JlZj4NCiAgPC9kb2lfcmVjb3JkPg0KPC9kb2lfcmVjb3Jkcz4=
35
+ http_version:
36
+ recorded_at: Fri, 18 May 2018 09:45:26 GMT
37
+ recorded_with: VCR 3.0.3
@@ -38,5 +38,21 @@ describe Bolognese::Metadata, vcr: true do
38
38
  expect(subject.date_published).to eq("2014")
39
39
  expect(subject.is_part_of).to eq("type"=>"Periodical", "title"=>"eLife", "issn"=>"2050-084X")
40
40
  end
41
+
42
+ it "DOI does not exist" do
43
+ input = fixture_path + "pure.bib"
44
+ doi = "10.7554/elife.01567"
45
+ subject = Bolognese::Metadata.new(input: input, doi: doi)
46
+ expect(subject.valid?).to be false
47
+ expect(subject.state).to eq("not_found")
48
+ expect(subject.identifier).to eq("https://doi.org/10.7554/elife.01567")
49
+ expect(subject.bibtex_type).to eq("phdthesis")
50
+ expect(subject.type).to eq("Thesis")
51
+ expect(subject.resource_type_general).to eq("Text")
52
+ expect(subject.author).to eq([{"type"=>"Person", "name"=>"Y. Toparlar", "givenName"=>"Y.", "familyName"=>"Toparlar"}])
53
+ expect(subject.title).to eq("A multiscale analysis of the urban heat island effect: from city averaged temperatures to the energy demand of individual buildings")
54
+ expect(subject.description["text"]).to start_with("Designing the climates of cities")
55
+ expect(subject.date_published).to eq("2018")
56
+ end
41
57
  end
42
58
  end
@@ -241,7 +241,7 @@ describe Bolognese::Metadata, vcr: true do
241
241
  subject = Bolognese::Metadata.new(input: input)
242
242
  expect(subject.valid?).to be true
243
243
  expect(subject.identifier).to eq("https://doi.org/10.5072/testpub")
244
- expect(subject.type).to eq("ScholarlyArticle")
244
+ expect(subject.type).to eq("Book")
245
245
  expect(subject.additional_type).to eq("Monograph")
246
246
  expect(subject.resource_type_general).to eq("Text")
247
247
  expect(subject.author).to eq([{"type"=>"Person", "name"=>"John Smith", "givenName"=>"John", "familyName"=>"Smith"}, {"name"=>"つまらないものですが"}])
@@ -260,7 +260,7 @@ describe Bolognese::Metadata, vcr: true do
260
260
  subject = Bolognese::Metadata.new(input: input, doi: "10.5072/testpub2")
261
261
  expect(subject.valid?).to be true
262
262
  expect(subject.identifier).to eq("https://doi.org/10.5072/testpub2")
263
- expect(subject.type).to eq("ScholarlyArticle")
263
+ expect(subject.type).to eq("Book")
264
264
  expect(subject.additional_type).to eq("Monograph")
265
265
  expect(subject.resource_type_general).to eq("Text")
266
266
  expect(subject.author).to eq([{"type"=>"Person", "name"=>"John Smith", "givenName"=>"John", "familyName"=>"Smith"}, {"name"=>"つまらないものですが"}])
@@ -386,6 +386,24 @@ describe Bolognese::Metadata, vcr: true do
386
386
  expect(subject.valid?).to be false
387
387
  expect(subject.errors).to eq("4:0: ERROR: Element '{http://datacite.org/schema/kernel-4}creators': Missing child element(s). Expected is ( {http://datacite.org/schema/kernel-4}creator ).")
388
388
  end
389
+
390
+ it "dissertation" do
391
+ input = "10.3204/desy-2014-01645"
392
+ subject = Bolognese::Metadata.new(input: input)
393
+ expect(subject.valid?).to be true
394
+ expect(subject.identifier).to eq("https://doi.org/10.3204/desy-2014-01645")
395
+ expect(subject.resource_type_general).to eq("Text")
396
+ expect(subject.additional_type).to eq("Dissertation")
397
+ expect(subject.type).to eq("Thesis")
398
+ expect(subject.bibtex_type).to eq("phdthesis")
399
+ expect(subject.citeproc_type).to eq("thesis")
400
+ expect(subject.author).to eq("type"=>"Person", "name"=>"Heiko Conrad", "givenName"=>"Heiko", "familyName"=>"Conrad")
401
+ expect(subject.title).to eq("Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy")
402
+ expect(subject.date_published).to eq("2014")
403
+ expect(subject.publisher).to eq("Deutsches Elektronen-Synchrotron, DESY, Hamburg")
404
+ expect(subject.service_provider).to eq("DataCite")
405
+ expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
406
+ end
389
407
  end
390
408
 
391
409
  context "change datacite metadata" do
@@ -41,5 +41,21 @@ describe Bolognese::Metadata, vcr: true do
41
41
  expect(subject.is_part_of).to eq("type"=>"Periodical", "title"=>"eLife")
42
42
  expect(subject.container_title).to eq("eLife")
43
43
  end
44
+
45
+ it "DOI does not exist" do
46
+ input = fixture_path + "pure.ris"
47
+ doi = "10.7554/elife.01567"
48
+ subject = Bolognese::Metadata.new(input: input, doi: doi)
49
+ expect(subject.valid?).to be false
50
+ expect(subject.state).to eq("not_found")
51
+ expect(subject.identifier).to eq("https://doi.org/10.7554/elife.01567")
52
+ expect(subject.ris_type).to eq("THES")
53
+ expect(subject.type).to eq("Thesis")
54
+ expect(subject.resource_type_general).to eq("Text")
55
+ expect(subject.author).to eq("type"=>"Person", "name"=>"Y. Toparlar", "givenName"=>"Y.", "familyName"=>"Toparlar")
56
+ expect(subject.title).to eq("A multiscale analysis of the urban heat island effect")
57
+ expect(subject.description["text"]).to start_with("Designing the climates of cities")
58
+ expect(subject.date_published).to eq("2018-04-25")
59
+ end
44
60
  end
45
61
  end
data/spec/utils_spec.rb CHANGED
@@ -267,6 +267,23 @@ describe Bolognese::Metadata, vcr: true do
267
267
  end
268
268
  end
269
269
 
270
+ context "get_date_from_parts" do
271
+ it "date" do
272
+ response = subject.get_date_from_parts(2016, 12, 20)
273
+ expect(response).to eq("2016-12-20")
274
+ end
275
+
276
+ it "year-month" do
277
+ response = subject.get_date_from_parts(2016, 12)
278
+ expect(response).to eq("2016-12")
279
+ end
280
+
281
+ it "year" do
282
+ response = subject.get_date_from_parts(2016)
283
+ expect(response).to eq("2016")
284
+ end
285
+ end
286
+
270
287
  context "get_date_from_date_parts" do
271
288
  it "date" do
272
289
  date_as_parts = { "date-parts"=>[[2016, 12, 20]] }
@@ -28,7 +28,7 @@ describe Bolognese::Metadata, vcr: true do
28
28
  subject = Bolognese::Metadata.new(input: input, from: "datacite")
29
29
  expect(subject.valid?).to be true
30
30
  json = JSON.parse(subject.citeproc)
31
- expect(json["type"]).to eq("report")
31
+ expect(json["type"]).to eq("article-journal")
32
32
  expect(json["id"]).to eq("https://doi.org/10.5438/4k3m-nyvg")
33
33
  expect(json["DOI"]).to eq("10.5438/4k3m-nyvg")
34
34
  expect(json["title"]).to eq("Eating your own Dog Food")
@@ -95,7 +95,7 @@ describe Bolognese::Metadata, vcr: true do
95
95
  input = "https://doi.org/10.12763/ona1045"
96
96
  subject = Bolognese::Metadata.new(input: input, from: "datacite")
97
97
  json = JSON.parse(subject.citeproc)
98
- expect(json["type"]).to eq("report")
98
+ expect(json["type"]).to eq("article-journal")
99
99
  expect(json["DOI"]).to eq("10.12763/ona1045")
100
100
  expect(json["abstract"]).to eq("Le code est accompagné de commentaires de F. A. Vogel, qui signe l'épitre dédicatoire")
101
101
  end
@@ -126,7 +126,7 @@ describe Bolognese::Metadata, vcr: true do
126
126
  input = "https://doi.org/10.6102/ZIS146"
127
127
  subject = Bolognese::Metadata.new(input: input, from: "datacite")
128
128
  json = JSON.parse(subject.citeproc)
129
- expect(json["type"]).to eq("report")
129
+ expect(json["type"]).to eq("article-journal")
130
130
  expect(json["id"]).to eq("https://doi.org/10.6102/zis146")
131
131
  expect(json["DOI"]).to eq("10.6102/zis146")
132
132
  expect(json["title"]).to eq("Deutsche Version der Positive and Negative Affect Schedule (PANAS)")
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.10.7
4
+ version: 0.10.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-17 00:00:00.000000000 Z
11
+ date: 2018-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -560,6 +560,8 @@ files:
560
560
  - spec/fixtures/datacite_software_missing_comma.json
561
561
  - spec/fixtures/datacite_software_overlapping_keys.json
562
562
  - spec/fixtures/maremma/codemeta.json
563
+ - spec/fixtures/pure.bib
564
+ - spec/fixtures/pure.ris
563
565
  - spec/fixtures/schema_org.json
564
566
  - spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/default.yml
565
567
  - spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_bibtex.yml
@@ -663,6 +665,7 @@ files:
663
665
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_with_scheme.yml
664
666
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_with_wrong_orcid_scheme.yml
665
667
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/date.yml
668
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/dissertation.yml
666
669
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/empty_subject.yml
667
670
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/funding_schema_version_3.yml
668
671
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/is_identical_to.yml
@@ -674,6 +677,9 @@ files:
674
677
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/date.yml
675
678
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year-month.yml
676
679
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year.yml
680
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/date.yml
681
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/year-month.yml
682
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/year.yml
677
683
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/date.yml
678
684
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year-month.yml
679
685
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year.yml
@@ -901,7 +907,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
901
907
  version: '0'
902
908
  requirements: []
903
909
  rubyforge_project:
904
- rubygems_version: 2.7.6
910
+ rubygems_version: 2.7.7
905
911
  signing_key:
906
912
  specification_version: 4
907
913
  summary: Ruby client library for conversion of DOI Metadata