bolognese 0.9.71 → 0.9.72

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