bolognese 0.10.7 → 0.10.8

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: 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