bolognese 0.9.71 → 0.9.72

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: 27fa08f0cba20d70f70c8709c515c73429e654e312e4ce423b14b0945f99e752
4
- data.tar.gz: 2612b3851f969a1c9601ed0829c9d15ca323936ce1893165428166373f34c9e5
3
+ metadata.gz: 10b7b19b50f11d59d731d5ce52c7ab445ec2a5b3090f3c33bbdc7221438dfcf2
4
+ data.tar.gz: e7470fb34f1f232bd6f6e7f16a7cccfd0081d9d0f289c1f381accc0adcc509ac
5
5
  SHA512:
6
- metadata.gz: 19d1353aa529869aebeb96243334ce073a9a81895aed9a14b5293b12f48f30a5583a9624f9f450c6e59a521430e0ca6e60413f43567a36d2d46f1614395532f3
7
- data.tar.gz: 9388a935ad023229179832f289c2067e975af6b8d653ec5b45c1a5e400c5a11adbae01484bc4d109fc40830542ece84c22268db869f1da24386262f10b2ef590
6
+ metadata.gz: f688d4378c6f8a73c12de3b022bdfd2dbb3cd4ceb13d8d7de6e37c47414235184cceee8b776d106a68a2185bcc7e3fc57853448893f8143d64ce1602035802f0
7
+ data.tar.gz: be780ab41ab782b9bf199c4ca82a626eb5f18659d43cab0a6df6b8ab8cde34e2992679b1499fef797e813863c4e2efc788250699795d91f5c7f5b85b04704ec6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.9.71)
4
+ bolognese (0.9.72)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -61,14 +61,14 @@ module Bolognese
61
61
  include Bolognese::Writers::SchemaOrgWriter
62
62
  include Bolognese::Writers::TurtleWriter
63
63
 
64
- attr_accessor :doi, :author, :title, :publisher, :contributor, :license,
64
+ attr_accessor :id, :doi, :author, :title, :publisher, :contributor, :license,
65
65
  :date_accepted, :date_available, :date_copyrighted, :date_collected,
66
66
  :date_submitted, :date_valid, :date_created, :date_modified,
67
67
  :date_registered, :date_updated, :provider_id, :client_id, :journal,
68
68
  :volume, :issue, :first_page, :last_page, :url, :version, :keywords, :editor,
69
69
  :description, :alternate_name, :language, :content_size, :spatial_coverage,
70
70
  :schema_version, :additional_type, :has_part, :same_as,
71
- :is_previous_version_of, :is_new_version_of, :is_cited_by, :cites,
71
+ :is_previous_version_of, :is_new_version_of, :is_cited_by, :cites,
72
72
  :is_supplement_to, :is_supplemented_by, :is_continued_by, :continues,
73
73
  :has_metadata, :is_metadata_for, :is_referenced_by, :references,
74
74
  :is_documented_by, :documents, :is_compiled_by, :compiles,
@@ -87,8 +87,8 @@ module Bolognese
87
87
  @from = from || find_from_format(id: id)
88
88
 
89
89
  # generate name for method to call dynamically
90
- hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) : nil
91
- string = hsh.to_h.fetch("string", nil)
90
+ hsh = @from.present? ? send("get_" + @from, id: id, sandbox: options[:sandbox]) : {}
91
+ string = hsh.fetch("string", nil)
92
92
  elsif File.exist?(input)
93
93
  ext = File.extname(input)
94
94
  if %w(.bib .ris .xml .json).include?(ext)
@@ -110,11 +110,11 @@ module Bolognese
110
110
  end
111
111
 
112
112
  # generate name for method to call dynamically
113
- @metadata = @from.present? ? send("read_" + @from, string: string, sandbox: options[:sandbox], doi: options[:doi], url: options[:url]) : {}
113
+ @metadata = @from.present? ? send("read_" + @from, string: string, id: id, sandbox: options[:sandbox], doi: options[:doi], url: options[:url]) : {}
114
114
  @raw = string.present? ? string.strip : nil
115
115
 
116
116
  # replace DOI in XML if provided in options
117
- if @from == "datacite" && options[:doi].present?
117
+ if @from == "datacite" && options[:doi].present? && string.present?
118
118
  doc = Nokogiri::XML(string, nil, 'UTF-8', &:noblanks)
119
119
  node = doc.at_css("identifier")
120
120
  node.content = options[:doi].upcase
@@ -135,7 +135,7 @@ module Bolognese
135
135
  end
136
136
 
137
137
  def exists?
138
- metadata.fetch("id", nil).present?
138
+ metadata.fetch("state", "not_found") != "not_found"
139
139
  end
140
140
 
141
141
  def valid?
@@ -150,7 +150,7 @@ module Bolognese
150
150
  end
151
151
 
152
152
  def id
153
- @doi.present? ? doi_as_url(@doi) : metadata.fetch("id", nil)
153
+ @id ||= metadata.fetch("id", nil)
154
154
  end
155
155
 
156
156
  def type
@@ -178,7 +178,7 @@ module Bolognese
178
178
  end
179
179
 
180
180
  def doi
181
- @doi ||= metadata.fetch("doi", nil)
181
+ @doi ||= @id.present? ? doi_from_url(@id) : metadata.fetch("doi", nil)
182
182
  end
183
183
 
184
184
  def url
@@ -44,6 +44,7 @@ module Bolognese
44
44
  end
45
45
 
46
46
  page_first, page_last = meta.pages.to_s.split("-")
47
+ state = doi.present? ? "findable" : "not_found"
47
48
 
48
49
  { "id" => normalize_doi(doi),
49
50
  "type" => type,
@@ -61,7 +62,8 @@ module Bolognese
61
62
  "page_first" => page_first,
62
63
  "page_last" => page_last,
63
64
  "description" => { "text" => meta.field?(:abstract) && sanitize(meta.abstract.to_s).presence },
64
- "license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence }
65
+ "license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence },
66
+ "state" => state
65
67
  }
66
68
  end
67
69
  end
@@ -24,8 +24,10 @@ module Bolognese
24
24
  }
25
25
 
26
26
  def read_citeproc(string: nil, **options)
27
- errors = jsonlint(string)
28
- return { "errors" => errors } if errors.present?
27
+ if string.present?
28
+ errors = jsonlint(string)
29
+ return { "errors" => errors } if errors.present?
30
+ end
29
31
 
30
32
  meta = string.present? ? Maremma.from_json(string) : {}
31
33
 
@@ -43,8 +45,10 @@ module Bolognese
43
45
  else
44
46
  nil
45
47
  end
48
+ id = normalize_id(meta.fetch("id", nil))
49
+ state = id.present? ? "findable" : "not_found"
46
50
 
47
- { "id" => normalize_id(meta.fetch("id", nil)),
51
+ { "id" => id,
48
52
  "type" => type,
49
53
  "additional_type" => meta.fetch("additionalType", nil),
50
54
  "citeproc_type" => citeproc_type,
@@ -64,7 +68,8 @@ module Bolognese
64
68
  "description" => meta.fetch("abstract", nil).present? ? { "text" => sanitize(meta.fetch("abstract")) } : nil,
65
69
  #{ }"license" => { "id" => meta.field?(:copyright) && meta.copyright.to_s.presence },
66
70
  "version" => meta.fetch("version", nil),
67
- "keywords" => meta.fetch("categories", nil)
71
+ "keywords" => meta.fetch("categories", nil),
72
+ "state" => state
68
73
  }
69
74
  end
70
75
  end
@@ -2,7 +2,7 @@ module Bolognese
2
2
  module Readers
3
3
  module CodemetaReader
4
4
  def get_codemeta(id: nil, **options)
5
- return nil unless id.present?
5
+ return { "string" => nil, "state" => "not_found" } unless id.present?
6
6
  id = normalize_id(id)
7
7
  response = Maremma.get(github_as_codemeta_url(id), accept: "json", raw: true)
8
8
  string = response.body.fetch("data", nil)
@@ -11,17 +11,20 @@ module Bolognese
11
11
  end
12
12
 
13
13
  def read_codemeta(string: nil, **options)
14
- errors = jsonlint(string)
15
- return { "errors" => errors } if errors.present?
14
+ if string.present?
15
+ errors = jsonlint(string)
16
+ return { "errors" => errors } if errors.present?
17
+ end
16
18
 
17
19
  meta = string.present? ? Maremma.from_json(string) : {}
18
- identifier = meta.fetch("identifier", nil)
20
+ identifier = meta.fetch("identifier", nil) || options[:id]
19
21
  id = normalize_id(meta.fetch("@id", nil) || identifier)
20
22
  type = meta.fetch("@type", nil)
21
23
  author = get_authors(from_schema_org(Array.wrap(meta.fetch("agents", nil))))
22
24
  editor = get_authors(from_schema_org(Array.wrap(meta.fetch("editor", nil))))
23
25
  date_published = meta.fetch("datePublished", nil)
24
26
  publisher = meta.fetch("publisher", nil)
27
+ state = meta.present? ? "findable" : "not_found"
25
28
 
26
29
  { "id" => id,
27
30
  "type" => type,
@@ -45,7 +48,8 @@ module Bolognese
45
48
  "description" => meta.fetch("description", nil).present? ? { "text" => sanitize(meta.fetch("description")) } : nil,
46
49
  "license" => { "id" => meta.fetch("license", nil) },
47
50
  "version" => meta.fetch("version", nil),
48
- "keywords" => meta.fetch("tags", nil)
51
+ "keywords" => meta.fetch("tags", nil),
52
+ "state" => state
49
53
  }
50
54
  end
51
55
 
@@ -63,7 +63,7 @@ module Bolognese
63
63
  CONTACT_EMAIL = "tech@datacite.org"
64
64
 
65
65
  def get_crossref(id: nil, **options)
66
- return nil unless id.present?
66
+ return { "string" => nil, "state" => "not_found" } unless id.present?
67
67
 
68
68
  doi = doi_from_url(id)
69
69
  url = "http://www.crossref.org/openurl/?id=doi:#{doi}&noredirect=true&pid=#{CONTACT_EMAIL}&format=unixref"
@@ -82,13 +82,12 @@ module Bolognese
82
82
  meta = {}
83
83
  end
84
84
 
85
- return meta unless meta["crossref"].present?
86
-
87
85
  # model should be one of book, conference, database, dissertation, journal, peer_review, posted_content,
88
86
  # report-paper, sa_component, standard
89
- model = meta.dig("crossref").keys.first
87
+ model = meta.dig("crossref").to_h.keys.first
90
88
 
91
89
  additional_type = nil
90
+ bibliographic_metadata = {}
92
91
  program_metadata = {}
93
92
  journal_metadata = nil
94
93
  journal_issue = {}
@@ -99,15 +98,15 @@ module Bolognese
99
98
  book_metadata = meta.dig("crossref", "book", "book_metadata")
100
99
  book_series_metadata = meta.dig("crossref", "book", "book_series_metadata")
101
100
  book_set_metadata = meta.dig("crossref", "book", "book_set_metadata")
102
- bibliographic_metadata = meta.dig("crossref", "book", "content_item") || {}
101
+ bibliographic_metadata = meta.dig("crossref", "book", "content_item").to_h
103
102
  additional_type = bibliographic_metadata.fetch("component_type", nil) ? "book-" + bibliographic_metadata.fetch("component_type") : "book"
104
103
  publisher = book_metadata.dig("publisher", "publisher_name")
105
104
  when "conference"
106
105
  event_metadata = meta.dig("crossref", "conference", "event_metadata") || {}
107
- bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper") || {}
106
+ bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper").to_h
108
107
  when "journal"
109
108
  journal_metadata = meta.dig("crossref", "journal", "journal_metadata") || {}
110
- bibliographic_metadata = meta.dig("crossref", "journal", "journal_article") || {}
109
+ bibliographic_metadata = meta.dig("crossref", "journal", "journal_article").to_h
111
110
  program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
112
111
  journal_issue = meta.dig("crossref", "journal", "journal_issue") || {}
113
112
  journal_article = meta.dig("crossref", "journal", "journal_article") || {}
@@ -120,18 +119,20 @@ module Bolognese
120
119
  "journal"
121
120
  end
122
121
  when "posted_content"
123
- bibliographic_metadata = meta.dig("crossref", "posted_content") || {}
122
+ bibliographic_metadata = meta.dig("crossref", "posted_content").to_h
124
123
  when "sa_component"
125
- bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component") || {}
124
+ bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component").to_h
126
125
  end
127
126
 
128
- additional_type = (additional_type || model).underscore.camelize
127
+ additional_type = (additional_type || model).to_s.underscore.camelize.presence
129
128
  type = CR_TO_SO_TRANSLATIONS[additional_type] || "ScholarlyArticle"
130
- doi = bibliographic_metadata.dig("doi_data", "doi").to_s.downcase
129
+
130
+ doi = bibliographic_metadata.dig("doi_data", "doi").to_s.downcase.presence || doi_from_url(options[:id])
131
131
 
132
132
  # Crossref servers run on Eastern Time
133
133
  Time.zone = 'Eastern Time (US & Canada)'
134
- date_modified = Time.zone.parse(meta.fetch("timestamp", "")).utc.iso8601
134
+ date_modified = Time.zone.parse(meta.fetch("timestamp", "2018-01-01")).utc.iso8601
135
+ state = meta.present? ? "findable" : "not_found"
135
136
 
136
137
  { "id" => normalize_doi(doi),
137
138
  "type" => type,
@@ -163,7 +164,8 @@ module Bolognese
163
164
  "keywords" => nil,
164
165
  "language" => nil,
165
166
  "content_size" => nil,
166
- "schema_version" => nil
167
+ "schema_version" => nil,
168
+ "state" => state
167
169
  }
168
170
  end
169
171
 
@@ -9,6 +9,7 @@ module Bolognese
9
9
 
10
10
  resource_type_general = meta.fetch("resource-type-general", nil)
11
11
  type = Bolognese::Utils::DC_TO_SO_TRANSLATIONS[resource_type_general.to_s.dasherize] || "CreativeWork"
12
+ state = meta.fetch("doi", nil).present? ? "findable" : "not_found"
12
13
 
13
14
  { "id" => meta.fetch("id", nil),
14
15
  "type" => type,
@@ -44,7 +45,8 @@ module Bolognese
44
45
  "keywords" => meta.fetch("subject", nil),
45
46
  "language" => meta.fetch("language", nil),
46
47
  "content_size" => meta.fetch("size", nil),
47
- "schema_version" => meta.fetch("schema-version", nil)
48
+ "schema_version" => meta.fetch("schema-version", nil),
49
+ "state" => state
48
50
  }
49
51
  end
50
52
 
@@ -2,7 +2,7 @@ module Bolognese
2
2
  module Readers
3
3
  module DataciteReader
4
4
  def get_datacite(id: nil, **options)
5
- return nil unless id.present?
5
+ return { "string" => nil, "state" => "not_found" } unless id.present?
6
6
 
7
7
  doi = doi_from_url(id)
8
8
  search_url = doi_search(id, options)
@@ -10,7 +10,7 @@ module Bolognese
10
10
 
11
11
  response = Maremma.get search_url
12
12
  attributes = response.body.dig("data", "attributes")
13
- return nil unless attributes.present?
13
+ return { "string" => nil, "state" => "not_found" } unless attributes.present?
14
14
 
15
15
  client_id = response.body.dig("data", "relationships", "client", "data", "id").upcase
16
16
  provider_id = response.body.dig("data", "relationships", "provider", "data", "id").upcase
@@ -42,9 +42,7 @@ module Bolognese
42
42
  end
43
43
 
44
44
  def read_datacite(string: nil, **options)
45
- return { "errors" => "no content" } unless string.present?
46
-
47
- meta = Maremma.from_xml(string).fetch("resource", {})
45
+ meta = Maremma.from_xml(string).to_h.fetch("resource", {})
48
46
  schema_version = meta.fetch("xmlns", nil)
49
47
 
50
48
  # validate only when option is set, as this step is expensive and
@@ -57,7 +55,7 @@ module Bolognese
57
55
  if options[:doi]
58
56
  id = normalize_doi(options[:doi], sandbox: options[:sandbox])
59
57
  else
60
- id = normalize_doi(meta.dig("identifier", "__content__"), sandbox: options[:sandbox])
58
+ id = normalize_doi(meta.dig("identifier", "__content__") || options[:id], sandbox: options[:sandbox])
61
59
  end
62
60
 
63
61
  doi = doi_from_url(id)
@@ -93,6 +91,7 @@ module Bolognese
93
91
  f = datacite_funder_contributor(meta) + datacite_funding_reference(meta)
94
92
  f.length > 1 ? f : f.first
95
93
  end
94
+ state = doi.present? ? "findable" : "not_found"
96
95
 
97
96
  { "id" => id,
98
97
  "type" => type,
@@ -133,7 +132,8 @@ module Bolognese
133
132
  "keywords" => keywords,
134
133
  "language" => meta.fetch("language", nil),
135
134
  "content_size" => meta.fetch("size", nil),
136
- "schema_version" => schema_version
135
+ "schema_version" => schema_version,
136
+ "state" => state
137
137
  }
138
138
  end
139
139
 
@@ -46,6 +46,7 @@ module Bolognese
46
46
  else
47
47
  nil
48
48
  end
49
+ state = doi.present? ? "findable" : "not_found"
49
50
 
50
51
  { "id" => normalize_doi(doi),
51
52
  "type" => type,
@@ -68,7 +69,8 @@ module Bolognese
68
69
  "first_page" => meta.fetch("SP", nil),
69
70
  "last_page" => meta.fetch("EP", nil),
70
71
  "keywords" => meta.fetch("KW", nil),
71
- "language" => meta.fetch("LA", nil)
72
+ "language" => meta.fetch("LA", nil),
73
+ "state" => state
72
74
  }
73
75
  end
74
76
 
@@ -10,13 +10,27 @@ module Bolognese
10
10
  "isSuccessor" => "IsNewVersionOf"
11
11
  }
12
12
 
13
+ def get_schema_org(id: nil, **options)
14
+ return { "string" => nil, "state" => "not_found" } unless id.present?
15
+
16
+ id = normalize_id(id)
17
+ response = Maremma.get(id)
18
+ doc = Nokogiri::XML(response.body.fetch("data", nil), nil, 'UTF-8')
19
+ string = doc.at_xpath('//script[@type="application/ld+json"]')
20
+ string = string.text if string.present?
21
+
22
+ { "string" => string }
23
+ end
24
+
13
25
  def read_schema_org(string: nil, **options)
14
- errors = jsonlint(string)
15
- return { "errors" => errors } if errors.present?
26
+ if string.present?
27
+ errors = jsonlint(string)
28
+ return { "errors" => errors } if errors.present?
29
+ end
16
30
 
17
31
  meta = string.present? ? Maremma.from_json(string) : {}
18
32
 
19
- id = normalize_id(meta.fetch("@id", nil))
33
+ id = normalize_id(meta.fetch("@id", nil) || options[:id])
20
34
  type = meta.fetch("@type", nil)
21
35
  resource_type_general = Bolognese::Utils::SO_TO_DC_TRANSLATIONS[type]
22
36
  author = get_authors(from_schema_org(Array.wrap(meta.fetch("author", nil))))
@@ -27,6 +41,7 @@ module Bolognese
27
41
  meta.dig("publisher")
28
42
  end
29
43
  date_published = meta.fetch("datePublished", nil)
44
+ state = meta.present? ? "findable" : "not_found"
30
45
 
31
46
  { "id" => id,
32
47
  "type" => type,
@@ -55,22 +70,11 @@ module Bolognese
55
70
  "description" => meta.fetch("description", nil).present? ? { "text" => sanitize(meta.fetch("description")) } : nil,
56
71
  "license" => { "id" => meta.fetch("license", nil) },
57
72
  "version" => meta.fetch("version", nil),
58
- "keywords" => meta.fetch("keywords", nil).to_s.split(", ")
73
+ "keywords" => meta.fetch("keywords", nil).to_s.split(", "),
74
+ "state" => state
59
75
  }
60
76
  end
61
77
 
62
- def get_schema_org(id: nil, **options)
63
- return nil unless id.present?
64
-
65
- id = normalize_id(id)
66
- response = Maremma.get(id)
67
- doc = Nokogiri::XML(response.body.fetch("data", nil), nil, 'UTF-8')
68
- string = doc.at_xpath('//script[@type="application/ld+json"]')
69
- string = string.text if string.present?
70
-
71
- { "string" => string }
72
- end
73
-
74
78
  def schema_org_related_identifier(meta, relation_type: nil)
75
79
  normalize_ids(ids: meta.fetch(relation_type, nil))
76
80
  end
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.9.71"
2
+ VERSION = "0.9.72"
3
3
  end
@@ -35,5 +35,6 @@
35
35
  "text": "This tools are used to analyse the data produced by the Crosssover Experiment I designed to test Choice Architecture techniques as UI interventions in a SEEk4Science data catalogue. It contains:\n\n- Data structures for the experimental data.<br>\n- Visualisation functions<br>\n- Analysis functions\n\n## Installation\n\n- R<br>\n- python<br>\n- ipython 4\n\nClone and use.\n\n## Usage\n\n<br>\n```python<br>\nsource('parallel_plot.r')<br>\nwith(z, parallelset(trt,response, freq=count, alpha=0.2))<br>\n```\n\n<br>\n## Contributing\n\n1. Fork it!<br>\n2. Create your feature branch: `git checkout -b my-new-feature`<br>\n3. Commit your changes: `git commit -am 'Add some feature'`<br>\n4. Push to the branch: `git push origin my-new-feature`<br>\n5. Submit a pull request :D\n\n<br>\n## License\n\nThis work supports my PhD Thesis at University of Manchester."
36
36
  },
37
37
  "schema_version": "http://datacite.org/schema/kernel-4",
38
- "provider": "DataCite"
38
+ "provider": "DataCite",
39
+ "state": "findable"
39
40
  }
@@ -0,0 +1,112 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.datacite.org/prefixes/10.5061
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma - https://github.com/datacite/maremma
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Date:
20
+ - Sun, 14 Jan 2018 11:23:03 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
33
+ Etag:
34
+ - W/"675f0459ac44bbdfed07edbab66f777b"
35
+ X-Runtime:
36
+ - '0.019398'
37
+ X-Request-Id:
38
+ - 872af865-7150-4f9e-b467-7c44762acadf
39
+ X-Powered-By:
40
+ - Phusion Passenger 5.1.12
41
+ Server:
42
+ - nginx/1.12.2 + Phusion Passenger 5.1.12
43
+ Access-Control-Allow-Origin:
44
+ - "*"
45
+ Access-Control-Allow-Methods:
46
+ - GET, POST, PATCH, PUT, DELETE, OPTIONS
47
+ Access-Control-Allow-Headers:
48
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
49
+ Access-Control-Expose-Headers:
50
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
51
+ body:
52
+ encoding: UTF-8
53
+ string: '{"data":{"id":"10.5061","type":"prefixes","attributes":{"registration-agency":"DataCite","created":"2010-01-01T00:00:00.000Z","updated":null},"relationships":{"clients":{"data":[{"id":"cdl.dryad","type":"clients"}]},"providers":{"data":[{"id":"cdl","type":"providers"}]}}},"included":[{"id":"cdl.dryad","type":"clients","attributes":{"name":"Dryad","symbol":"CDL.DRYAD","year":2013,"contact-name":"Greg
54
+ Janee","contact-email":"gjanee@ucop.edu","domains":"*","is-active":true,"password":null,"created":"2013-02-19T17:42:03Z","updated":"2017-11-09T00:11:37Z"},"relationships":{"prefixes":{"meta":{}},"provider":{"meta":{}},"repository":{"meta":{}}}},{"id":"cdl","type":"providers","attributes":{"name":"California
55
+ Digital Library","symbol":"CDL","year":2010,"contact-name":"Greg Janee","contact-email":"gjanee@ucop.edu","logo-url":"https://assets.datacite.org/images/members/cdl.png","is-active":true,"password":"yes","created":"2010-01-01T00:00:00.000Z","updated":"2017-11-09T00:06:44.000Z"},"relationships":{"clients":{"meta":{}},"prefixes":{"meta":{}}}}]}'
56
+ http_version:
57
+ recorded_at: Sun, 14 Jan 2018 11:23:03 GMT
58
+ - request:
59
+ method: get
60
+ uri: https://api.datacite.org/dois/10.5061/dryad.8515?include=client,provider
61
+ body:
62
+ encoding: US-ASCII
63
+ string: ''
64
+ headers:
65
+ User-Agent:
66
+ - Maremma - https://github.com/datacite/maremma
67
+ Accept:
68
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
69
+ response:
70
+ status:
71
+ code: 200
72
+ message: OK
73
+ headers:
74
+ Date:
75
+ - Sun, 14 Jan 2018 11:23:03 GMT
76
+ Content-Type:
77
+ - application/vnd.api+json; charset=utf-8
78
+ Connection:
79
+ - keep-alive
80
+ Status:
81
+ - 200 OK
82
+ X-Anonymous-Consumer:
83
+ - 'true'
84
+ Cache-Control:
85
+ - max-age=0, private, must-revalidate
86
+ Vary:
87
+ - Accept-Encoding
88
+ Etag:
89
+ - W/"94247e0a1f8d60cd1f284a23b3041e51"
90
+ X-Runtime:
91
+ - '0.143771'
92
+ X-Request-Id:
93
+ - ea9d617f-832e-4750-9101-41eed0b38227
94
+ X-Powered-By:
95
+ - Phusion Passenger 5.1.12
96
+ Server:
97
+ - nginx/1.12.2 + Phusion Passenger 5.1.12
98
+ Access-Control-Allow-Origin:
99
+ - "*"
100
+ Access-Control-Allow-Methods:
101
+ - GET, POST, PATCH, PUT, DELETE, OPTIONS
102
+ Access-Control-Allow-Headers:
103
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
104
+ Access-Control-Expose-Headers:
105
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
106
+ body:
107
+ encoding: ASCII-8BIT
108
+ string: !binary |-
109
+ eyJkYXRhIjp7ImlkIjoiMTAuNTA2MS9kcnlhZC44NTE1IiwidHlwZSI6ImRvaXMiLCJhdHRyaWJ1dGVzIjp7ImRvaSI6IjEwLjUwNjEvZHJ5YWQuODUxNSIsImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNTA2MS9kcnlhZC44NTE1IiwidXJsIjoiaHR0cDovL2RhdGFkcnlhZC5vcmcvcmVzb3VyY2UvZG9pOjEwLjUwNjEvZHJ5YWQuODUxNSIsImF1dGhvciI6W3sidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJCZW5qYW1pbiBPbGxvbW8iLCJnaXZlbi1uYW1lIjoiQmVuamFtaW4iLCJmYW1pbHktbmFtZSI6Ik9sbG9tbyJ9LHsidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJQYXRyaWNrIER1cmFuZCIsImdpdmVuLW5hbWUiOiJQYXRyaWNrIiwiZmFtaWx5LW5hbWUiOiJEdXJhbmQifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRnJhbmNrIFBydWdub2xsZSIsImdpdmVuLW5hbWUiOiJGcmFuY2siLCJmYW1pbHktbmFtZSI6IlBydWdub2xsZSJ9LHsidHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJFbW1hbnVlbCBKLiBQLiBEb3V6ZXJ5IiwiZ2l2ZW4tbmFtZSI6IkVtbWFudWVsIEouIFAuIiwiZmFtaWx5LW5hbWUiOiJEb3V6ZXJ5In0seyJ0eXBlIjoiUGVyc29uIiwibmFtZSI6IkPDqWxpbmUgQXJuYXRoYXUiLCJnaXZlbi1uYW1lIjoiQ8OpbGluZSIsImZhbWlseS1uYW1lIjoiQXJuYXRoYXUifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRGlldWRvbm7DqSBOa29naGUiLCJnaXZlbi1uYW1lIjoiRGlldWRvbm7DqSIsImZhbWlseS1uYW1lIjoiTmtvZ2hlIn0seyJ0eXBlIjoiUGVyc29uIiwibmFtZSI6IkVyaWMgTGVyb3kiLCJnaXZlbi1uYW1lIjoiRXJpYyIsImZhbWlseS1uYW1lIjoiTGVyb3kifSx7InR5cGUiOiJQZXJzb24iLCJuYW1lIjoiRnJhbsOnb2lzIFJlbmF1ZCIsImdpdmVuLW5hbWUiOiJGcmFuw6dvaXMiLCJmYW1pbHktbmFtZSI6IlJlbmF1ZCJ9XSwidGl0bGUiOiJEYXRhIGZyb206IEEgbmV3IG1hbGFyaWEgYWdlbnQgaW4gQWZyaWNhbiBob21pbmlkcy4iLCJjb250YWluZXItdGl0bGUiOiJEcnlhZCBEaWdpdGFsIFJlcG9zaXRvcnkiLCJkZXNjcmlwdGlvbiI6bnVsbCwicmVzb3VyY2UtdHlwZS1zdWJ0eXBlIjoiRGF0YVBhY2thZ2UiLCJsaWNlbnNlIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wIiwidmVyc2lvbiI6MjAsInJlbGF0ZWQtaWRlbnRpZmllciI6W3sidHlwZSI6IkNyZWF0aXZlV29yayIsImlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUwNjEvZHJ5YWQuODUxNS8xIiwicmVsYXRpb24tdHlwZSI6Ikhhc1BhcnQifSx7InR5cGUiOiJDcmVhdGl2ZVdvcmsiLCJpZCI6Imh0dHBzOi8vZG9pLm9yZy8xMC41MDYxL2RyeWFkLjg1MTUvMiIsInJlbGF0aW9uLXR5cGUiOiJIYXNQYXJ0In0seyJ0eXBlIjoiQ3JlYXRpdmVXb3JrIiwiaWQiOiJodHRwczovL2RvaS5vcmcvMTAuMTM3MS9qb3VybmFsLnBwYXQuMTAwMDQ0NiIsInJlbGF0aW9uLXR5cGUiOiJJc1JlZmVyZW5jZWRCeSJ9LHsidHlwZSI6IkNyZWF0aXZlV29yayIsImlkIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEzNzEvam91cm5hbC5wcGF0LjEwMDA0NDYiLCJyZWxhdGlvbi10eXBlIjoiSXNTdXBwbGVtZW50VG8ifV0sInNjaGVtYS12ZXJzaW9uIjoiaHR0cDovL2RhdGFjaXRlLm9yZy9zY2hlbWEva2VybmVsLTQiLCJzdGF0ZSI6ImZpbmRhYmxlIiwieG1sIjoiUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BISmxjMjkxXG5jbU5sSUhodGJHNXpQU0pvZEhSd09pOHZaR0YwWVdOcGRHVXViM0puTDNOamFHVnRZUzlyWlhKdVpXd3Rcbk5DSWdlRzFzYm5NNmVITnBQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBeEwxaE5URk5qYUdWdFxuWVMxcGJuTjBZVzVqWlNJZ2VHMXNibk02YldWMGN6MGlhSFIwY0RvdkwzZDNkeTVzYjJNdVoyOTJMMDFGXG5WRk12SWlCNGJXeHVjenBrYzNCaFkyVTlJbWgwZEhBNkx5OTNkM2N1WkhOd1lXTmxMbTl5Wnk5NGJXeHVcbmN5OWtjM0JoWTJVdlpHbHRJaUI0Yld4dWN6cGthVzA5SW1oMGRIQTZMeTkzZDNjdVpITndZV05sTG05eVxuWnk5NGJXeHVjeTlrYzNCaFkyVXZaR2x0SWlCNGJXeHVjenBrY25saFpEMGlhSFIwY0RvdkwzQjFjbXd1XG5iM0puTDJSeWVXRmtMM1JsY20xekx5SWdlSE5wT25OamFHVnRZVXh2WTJGMGFXOXVQU0pvZEhSd09pOHZcblpHRjBZV05wZEdVdWIzSm5MM05qYUdWdFlTOXJaWEp1Wld3dE5DQm9kSFJ3T2k4dmMyTm9aVzFoTG1SaFxuZEdGamFYUmxMbTl5Wnk5dFpYUmhMMnRsY201bGJDMDBMMjFsZEdGa1lYUmhMbmh6WkNJK0NpQWdQR2xrXG5aVzUwYVdacFpYSWdhV1JsYm5ScFptbGxjbFI1Y0dVOUlrUlBTU0krTVRBdU5UQTJNUzlFVWxsQlJDNDRcbk5URTFQQzlwWkdWdWRHbG1hV1Z5UGdvZ0lEeDJaWEp6YVc5dVBqRThMM1psY25OcGIyNCtDaUFnUEdOeVxuWldGMGIzSnpQZ29nSUNBZ1BHTnlaV0YwYjNJK0NpQWdJQ0FnSUR4amNtVmhkRzl5VG1GdFpUNVBiR3h2XG5iVzhzSUVKbGJtcGhiV2x1UEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdcbklEeGpjbVZoZEc5eVBnb2dJQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStSSFZ5WVc1a0xDQlFZWFJ5YVdOclxuUEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdJRHhqY21WaGRHOXlQZ29nXG5JQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStVSEoxWjI1dmJHeGxMQ0JHY21GdVkyczhMMk55WldGMGIzSk9cbllXMWxQZ29nSUNBZ1BDOWpjbVZoZEc5eVBnb2dJQ0FnUEdOeVpXRjBiM0krQ2lBZ0lDQWdJRHhqY21WaFxuZEc5eVRtRnRaVDVFYjNWNlpYSjVMQ0JGYlcxaGJuVmxiQ0JLTGlCUUxqd3ZZM0psWVhSdmNrNWhiV1UrXG5DaUFnSUNBOEwyTnlaV0YwYjNJK0NpQWdJQ0E4WTNKbFlYUnZjajRLSUNBZ0lDQWdQR055WldGMGIzSk9cbllXMWxQa0Z5Ym1GMGFHRjFMQ0JEdzZsc2FXNWxQQzlqY21WaGRHOXlUbUZ0WlQ0S0lDQWdJRHd2WTNKbFxuWVhSdmNqNEtJQ0FnSUR4amNtVmhkRzl5UGdvZ0lDQWdJQ0E4WTNKbFlYUnZjazVoYldVK1RtdHZaMmhsXG5MQ0JFYVdWMVpHOXVic09wUEM5amNtVmhkRzl5VG1GdFpUNEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0S0lDQWdcbklEeGpjbVZoZEc5eVBnb2dJQ0FnSUNBOFkzSmxZWFJ2Y2s1aGJXVStUR1Z5YjNrc0lFVnlhV004TDJOeVxuWldGMGIzSk9ZVzFsUGdvZ0lDQWdQQzlqY21WaGRHOXlQZ29nSUNBZ1BHTnlaV0YwYjNJK0NpQWdJQ0FnXG5JRHhqY21WaGRHOXlUbUZ0WlQ1U1pXNWhkV1FzSUVaeVlXN0RwMjlwY3p3dlkzSmxZWFJ2Y2s1aGJXVStcbkNpQWdJQ0E4TDJOeVpXRjBiM0krQ2lBZ1BDOWpjbVZoZEc5eWN6NEtJQ0E4ZEdsMGJHVnpQZ29nSUNBZ1xuUEhScGRHeGxQa1JoZEdFZ1puSnZiVG9nUVNCdVpYY2diV0ZzWVhKcFlTQmhaMlZ1ZENCcGJpQkJabkpwXG5ZMkZ1SUdodmJXbHVhV1J6TGp3dmRHbDBiR1UrQ2lBZ1BDOTBhWFJzWlhNK0NpQWdQSEIxWW14cGMyaGxcbmNqNUVjbmxoWkNCRWFXZHBkR0ZzSUZKbGNHOXphWFJ2Y25rOEwzQjFZbXhwYzJobGNqNEtJQ0E4Y0hWaVxuYkdsallYUnBiMjVaWldGeVBqSXdNVEU4TDNCMVlteHBZMkYwYVc5dVdXVmhjajRLSUNBOGMzVmlhbVZqXG5kSE0rQ2lBZ0lDQThjM1ZpYW1WamRENVFhSGxzYjJkbGJuazhMM04xWW1wbFkzUStDaUFnSUNBOGMzVmlcbmFtVmpkRDVOWVd4aGNtbGhQQzl6ZFdKcVpXTjBQZ29nSUNBZ1BITjFZbXBsWTNRK1VHRnlZWE5wZEdWelxuUEM5emRXSnFaV04wUGdvZ0lDQWdQSE4xWW1wbFkzUStWR0Y0YjI1dmJYazhMM04xWW1wbFkzUStDaUFnXG5JQ0E4YzNWaWFtVmpkRDVOYVhSdlkyaHZibVJ5YVdGc0lHZGxibTl0WlR3dmMzVmlhbVZqZEQ0S0lDQWdcbklEeHpkV0pxWldOMFBrRm1jbWxqWVR3dmMzVmlhbVZqZEQ0S0lDQWdJRHh6ZFdKcVpXTjBQbEJzWVhOdFxuYjJScGRXMDhMM04xWW1wbFkzUStDaUFnUEM5emRXSnFaV04wY3o0S0lDQThjbVZ6YjNWeVkyVlVlWEJsXG5JSEpsYzI5MWNtTmxWSGx3WlVkbGJtVnlZV3c5SWtSaGRHRnpaWFFpUGtSaGRHRlFZV05yWVdkbFBDOXlcblpYTnZkWEpqWlZSNWNHVStDaUFnUEdGc2RHVnlibUYwWlVsa1pXNTBhV1pwWlhKelBnb2dJQ0FnUEdGc1xuZEdWeWJtRjBaVWxrWlc1MGFXWnBaWElnWVd4MFpYSnVZWFJsU1dSbGJuUnBabWxsY2xSNWNHVTlJbU5wXG5kR0YwYVc5dUlqNVBiR3h2Ylc4Z1Fpd2dSSFZ5WVc1a0lGQXNJRkJ5ZFdkdWIyeHNaU0JHTENCRWIzVjZcblpYSjVJRVZLVUN3Z1FYSnVZWFJvWVhVZ1F5d2dUbXR2WjJobElFUXNJRXhsY205NUlFVXNJRkpsYm1GMVxuWkNCR0lDZ3lNREE1S1NCQklHNWxkeUJ0WVd4aGNtbGhJR0ZuWlc1MElHbHVJRUZtY21sallXNGdhRzl0XG5hVzVwWkhNdUlGQk1iMU1nVUdGMGFHOW5aVzV6SURVb05TazZJR1V4TURBd05EUTJMand2WVd4MFpYSnVcbllYUmxTV1JsYm5ScFptbGxjajRLSUNBOEwyRnNkR1Z5Ym1GMFpVbGtaVzUwYVdacFpYSnpQZ29nSUR4eVxuWld4aGRHVmtTV1JsYm5ScFptbGxjbk0rQ2lBZ0lDQThjbVZzWVhSbFpFbGtaVzUwYVdacFpYSWdjbVZzXG5ZWFJsWkVsa1pXNTBhV1pwWlhKVWVYQmxQU0pFVDBraUlISmxiR0YwYVc5dVZIbHdaVDBpU0dGelVHRnlcbmRDSStNVEF1TlRBMk1TOUVVbGxCUkM0NE5URTFMekU4TDNKbGJHRjBaV1JKWkdWdWRHbG1hV1Z5UGdvZ1xuSUNBZ1BISmxiR0YwWldSSlpHVnVkR2xtYVdWeUlISmxiR0YwWldSSlpHVnVkR2xtYVdWeVZIbHdaVDBpXG5SRTlKSWlCeVpXeGhkR2x2YmxSNWNHVTlJa2hoYzFCaGNuUWlQakV3TGpVd05qRXZSRkpaUVVRdU9EVXhcbk5TOHlQQzl5Wld4aGRHVmtTV1JsYm5ScFptbGxjajRLSUNBZ0lEeHlaV3hoZEdWa1NXUmxiblJwWm1sbFxuY2lCeVpXeGhkR1ZrU1dSbGJuUnBabWxsY2xSNWNHVTlJa1JQU1NJZ2NtVnNZWFJwYjI1VWVYQmxQU0pKXG5jMUpsWm1WeVpXNWpaV1JDZVNJK01UQXVNVE0zTVM5S1QxVlNUa0ZNTGxCUVFWUXVNVEF3TURRME5qd3ZcbmNtVnNZWFJsWkVsa1pXNTBhV1pwWlhJK0NpQWdJQ0E4Y21Wc1lYUmxaRWxrWlc1MGFXWnBaWElnY21Wc1xuWVhSbFpFbGtaVzUwYVdacFpYSlVlWEJsUFNKRVQwa2lJSEpsYkdGMGFXOXVWSGx3WlQwaVNYTlRkWEJ3XG5iR1Z0Wlc1MFZHOGlQakV3TGpFek56RXZTazlWVWs1QlRDNVFVRUZVTGpFd01EQTBORFk4TDNKbGJHRjBcblpXUkpaR1Z1ZEdsbWFXVnlQZ29nSUNBZ1BISmxiR0YwWldSSlpHVnVkR2xtYVdWeUlISmxiR0YwWldSSlxuWkdWdWRHbG1hV1Z5Vkhsd1pUMGlVRTFKUkNJZ2NtVnNZWFJwYjI1VWVYQmxQU0pKYzFKbFptVnlaVzVqXG5aV1JDZVNJK01UazBOemc0TnpjOEwzSmxiR0YwWldSSlpHVnVkR2xtYVdWeVBnb2dJQ0FnUEhKbGJHRjBcblpXUkpaR1Z1ZEdsbWFXVnlJSEpsYkdGMFpXUkpaR1Z1ZEdsbWFXVnlWSGx3WlQwaVVFMUpSQ0lnY21Wc1xuWVhScGIyNVVlWEJsUFNKSmMxTjFjSEJzWlcxbGJuUlVieUkrTVRrME56ZzROemM4TDNKbGJHRjBaV1JKXG5aR1Z1ZEdsbWFXVnlQZ29nSUR3dmNtVnNZWFJsWkVsa1pXNTBhV1pwWlhKelBnb2dJRHh5YVdkb2RITk1cbmFYTjBQZ29nSUNBZ1BISnBaMmgwY3lCeWFXZG9kSE5WVWtrOUltaDBkSEE2THk5amNtVmhkR2wyWldOdlxuYlcxdmJuTXViM0puTDNCMVlteHBZMlJ2YldGcGJpOTZaWEp2THpFdU1DOGlMejRLSUNBOEwzSnBaMmgwXG5jMHhwYzNRK0Nqd3ZjbVZ6YjNWeVkyVStcbiIsInB1Ymxpc2hlZCI6IjIwMTEiLCJyZWdpc3RlcmVkIjoiMjAxMS0wMi0wMVQxNzozMjowMi4wMDBaIiwidXBkYXRlZCI6IjIwMTctMDktMDJUMDc6MzI6MjMuMDAwWiJ9LCJyZWxhdGlvbnNoaXBzIjp7ImNsaWVudCI6eyJkYXRhIjp7ImlkIjoiY2RsLmRyeWFkIiwidHlwZSI6ImNsaWVudHMifX0sInByb3ZpZGVyIjp7ImRhdGEiOnsiaWQiOiJjZGwiLCJ0eXBlIjoicHJvdmlkZXJzIn19LCJyZXNvdXJjZS10eXBlIjp7Im1ldGEiOnt9fSwibWVkaWEiOnsibWV0YSI6e319fX0sImluY2x1ZGVkIjpbeyJpZCI6ImNkbC5kcnlhZCIsInR5cGUiOiJjbGllbnRzIiwiYXR0cmlidXRlcyI6eyJuYW1lIjoiRHJ5YWQiLCJzeW1ib2wiOiJDREwuRFJZQUQiLCJ5ZWFyIjoyMDEzLCJjb250YWN0LW5hbWUiOiJHcmVnIEphbmVlIiwiY29udGFjdC1lbWFpbCI6ImdqYW5lZUB1Y29wLmVkdSIsImRvbWFpbnMiOiIqIiwiaXMtYWN0aXZlIjp0cnVlLCJwYXNzd29yZCI6bnVsbCwiY3JlYXRlZCI6IjIwMTMtMDItMTlUMTc6NDI6MDNaIiwidXBkYXRlZCI6IjIwMTctMTEtMDlUMDA6MTE6MzdaIn0sInJlbGF0aW9uc2hpcHMiOnsicHJlZml4ZXMiOnsibWV0YSI6e319LCJwcm92aWRlciI6eyJtZXRhIjp7fX0sInJlcG9zaXRvcnkiOnsibWV0YSI6e319fX0seyJpZCI6ImNkbCIsInR5cGUiOiJwcm92aWRlcnMiLCJhdHRyaWJ1dGVzIjp7Im5hbWUiOiJDYWxpZm9ybmlhIERpZ2l0YWwgTGlicmFyeSIsInN5bWJvbCI6IkNETCIsInllYXIiOjIwMTAsImNvbnRhY3QtbmFtZSI6IkdyZWcgSmFuZWUiLCJjb250YWN0LWVtYWlsIjoiZ2phbmVlQHVjb3AuZWR1IiwibG9nby11cmwiOiJodHRwczovL2Fzc2V0cy5kYXRhY2l0ZS5vcmcvaW1hZ2VzL21lbWJlcnMvY2RsLnBuZyIsImlzLWFjdGl2ZSI6dHJ1ZSwicGFzc3dvcmQiOiJ5ZXMiLCJjcmVhdGVkIjoiMjAxMC0wMS0wMVQwMDowMDowMC4wMDBaIiwidXBkYXRlZCI6IjIwMTctMTEtMDlUMDA6MDY6NDQuMDAwWiJ9LCJyZWxhdGlvbnNoaXBzIjp7ImNsaWVudHMiOnsibWV0YSI6e319LCJwcmVmaXhlcyI6eyJtZXRhIjp7fX19fV19
110
+ http_version:
111
+ recorded_at: Sun, 14 Jan 2018 11:23:03 GMT
112
+ recorded_with: VCR 3.0.3
@@ -32,15 +32,17 @@ describe Bolognese::Metadata, vcr: true do
32
32
  it "no codemeta.json" do
33
33
  input = "https://github.com/datacite/homepage"
34
34
  subject = Bolognese::Metadata.new(input: input)
35
- expect(subject.id).to be_nil
35
+ expect(subject.id).to eq("https://github.com/datacite/homepage")
36
36
  expect(subject.exists?).to be false
37
+ expect(subject.state).to eq("not_found")
37
38
  end
38
39
 
39
40
  it "not found error" do
40
41
  input = "https://github.com/datacite/x"
41
42
  subject = Bolognese::Metadata.new(input: input)
42
- expect(subject.id).to be_nil
43
+ expect(subject.id).to eq("https://github.com/datacite/x")
43
44
  expect(subject.exists?).to be false
45
+ expect(subject.state).to eq("not_found")
44
46
  end
45
47
 
46
48
  it "rdataone" do
@@ -193,6 +193,10 @@ describe Bolognese::Metadata, vcr: true do
193
193
  input = "https://doi.org/10.7554/elife.01567x"
194
194
  subject = Bolognese::Metadata.new(input: input)
195
195
  expect(subject.valid?).to be false
196
+ expect(subject.id).to eq("https://doi.org/10.7554/elife.01567x")
197
+ expect(subject.doi).to eq("10.7554/elife.01567x")
198
+ expect(subject.provider).to eq("Crossref")
199
+ expect(subject.state).to eq("not_found")
196
200
  end
197
201
  end
198
202
  end
@@ -323,6 +323,10 @@ describe Bolognese::Metadata, vcr: true do
323
323
  input = "https://doi.org/10.4124/05F6C379-DD68-4CDB-880D-33D3E9576D52/1"
324
324
  subject = Bolognese::Metadata.new(input: input)
325
325
  expect(subject.valid?).to be false
326
+ expect(subject.id).to eq("https://doi.org/10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1")
327
+ expect(subject.doi).to eq("10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1")
328
+ expect(subject.provider).to eq("DataCite")
329
+ expect(subject.state).to eq("not_found")
326
330
  end
327
331
 
328
332
  it "DOI in test system" do
@@ -368,8 +372,8 @@ describe Bolognese::Metadata, vcr: true do
368
372
  end
369
373
 
370
374
  context "change datacite metadata" do
371
- it "change doi" do
372
- subject.doi = "10.5061/8515"
375
+ it "change id" do
376
+ subject.id = "https://doi.org/10.5061/8515"
373
377
  expect(subject.valid?).to be true
374
378
  expect(subject.id).to eq("https://doi.org/10.5061/8515")
375
379
  expect(subject.doi).to eq("10.5061/8515")
@@ -34,7 +34,7 @@ describe Bolognese::Metadata, vcr: true do
34
34
 
35
35
  it "BlogPosting with new DOI" do
36
36
  subject = Bolognese::Metadata.new(input: input)
37
- subject.doi = "10.5438/0000-00ss"
37
+ subject.id = "https://doi.org/10.5438/0000-00ss"
38
38
  expect(subject.valid?).to be true
39
39
  expect(subject.id).to eq("https://doi.org/10.5438/0000-00ss")
40
40
  expect(subject.doi).to eq("10.5438/0000-00ss")
@@ -45,8 +45,9 @@ describe Bolognese::Metadata, vcr: true do
45
45
  it "not found error" do
46
46
  input = "https://doi.org/10.5438/4K3M-NYVGx"
47
47
  subject = Bolognese::Metadata.new(input: input, from: "schema_org")
48
- expect(subject.id).to be_nil
48
+ expect(subject.id).to eq("https://doi.org/10.5438/4k3m-nyvgx")
49
49
  expect(subject.exists?).to be false
50
+ expect(subject.state).to eq("not_found")
50
51
  end
51
52
  end
52
53
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.71
4
+ version: 0.9.72
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-01-13 00:00:00.000000000 Z
11
+ date: 2018-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -584,6 +584,7 @@ files:
584
584
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/single_author.yml
585
585
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/with_organization.yml
586
586
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_doi.yml
587
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_id.yml
587
588
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_title.yml
588
589
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/validates_against_schema.yml
589
590
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/with_data_citation.yml