commonmeta-ruby 3.3.10 → 3.3.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/commonmeta/readers/json_feed_reader.rb +11 -6
- data/lib/commonmeta/version.rb +1 -1
- data/spec/readers/json_feed_reader_spec.rb +26 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8e7c60967025a09cb657d4fca3b6a2a75729d41567ae0fbe6eabae72a149d6b
|
4
|
+
data.tar.gz: c182b27c23b4ad623e0fbb9893f02e9d0a29eae30195e235f04c87018af0a3d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be7fd107870ad39838906c7abb0554267db3121c126cf7f7f913a39c3957ba80db3230aac745adb5aa109058324ffd1994796482d2e9e7ef7d10c79486826626
|
7
|
+
data.tar.gz: a662fb919e4c920485cf2766268f5e173a4758d14ff4164d77653c3a8b301eec46f8d53aeeb780d7f9553c663e505f120a04d8b607f0b63fb7f00be6e8552121
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
commonmeta-ruby (3.3.
|
4
|
+
commonmeta-ruby (3.3.11)
|
5
5
|
activesupport (>= 4.2.5, < 8.0)
|
6
6
|
addressable (~> 2.8.1, < 2.8.2)
|
7
7
|
base32-url (>= 0.7.0, < 1)
|
@@ -191,7 +191,7 @@ GEM
|
|
191
191
|
rspec-xsd (0.1.0)
|
192
192
|
nokogiri (~> 1.6)
|
193
193
|
rspec (~> 3)
|
194
|
-
rubocop (1.54.
|
194
|
+
rubocop (1.54.1)
|
195
195
|
json (~> 2.3)
|
196
196
|
language_server-protocol (>= 3.17.0)
|
197
197
|
parallel (~> 1.10)
|
@@ -84,10 +84,15 @@ module Commonmeta
|
|
84
84
|
def get_references(meta)
|
85
85
|
# check that references resolve
|
86
86
|
Array.wrap(meta["references"]).reduce([]) do |sum, reference|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
begin
|
88
|
+
if reference["doi"] && validate_doi(reference["doi"])
|
89
|
+
sum << reference if [200, 301, 302].include? HTTP.head(reference["doi"]).status
|
90
|
+
elsif reference["url"] && validate_url(reference["url"]) == "URL"
|
91
|
+
sum << reference if [200, 301, 302].include? HTTP.head(reference["url"]).status
|
92
|
+
end
|
93
|
+
rescue => error
|
94
|
+
puts "Error: #{error.message}"
|
95
|
+
puts "Error: #{reference}"
|
91
96
|
end
|
92
97
|
|
93
98
|
sum
|
@@ -135,7 +140,7 @@ module Commonmeta
|
|
135
140
|
return nil unless response.status.success?
|
136
141
|
|
137
142
|
post = JSON.parse(response.body.to_s)
|
138
|
-
post.to_h.dig(
|
143
|
+
post.to_h.dig("prefix")
|
139
144
|
end
|
140
145
|
|
141
146
|
def get_doi_prefix_by_json_feed_item_uuid(uuid)
|
@@ -146,7 +151,7 @@ module Commonmeta
|
|
146
151
|
return nil unless response.status.success?
|
147
152
|
|
148
153
|
post = JSON.parse(response.body.to_s)
|
149
|
-
post.to_h.dig(
|
154
|
+
post.to_h.dig("blog", "prefix")
|
150
155
|
end
|
151
156
|
end
|
152
157
|
end
|
data/lib/commonmeta/version.rb
CHANGED
@@ -348,6 +348,32 @@ describe Commonmeta::Metadata, vcr: true do
|
|
348
348
|
expect(subject.references).to be_nil
|
349
349
|
end
|
350
350
|
|
351
|
+
it "wordpress post with many references" do
|
352
|
+
input = "https://rogue-scholar.org/api/posts/f3dc29da-0481-4f3b-8110-4c07260fca67"
|
353
|
+
subject = described_class.new(input: input)
|
354
|
+
expect(subject.valid?).to be true
|
355
|
+
expect(subject.id).to eq("https://flavoursofopen.science/grundlagen-fur-die-entwicklung-einer-open-scholarship-strategie")
|
356
|
+
expect(subject.url).to eq("https://flavoursofopen.science/grundlagen-fur-die-entwicklung-einer-open-scholarship-strategie")
|
357
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "f3dc29da-0481-4f3b-8110-4c07260fca67", "alternateIdentifierType" => "UUID" }])
|
358
|
+
expect(subject.type).to eq("Article")
|
359
|
+
expect(subject.creators.length).to eq(1)
|
360
|
+
expect(subject.creators.first).to eq("familyName"=>"Steiner", "givenName"=>"Tobias", "id"=>"https://orcid.org/0000-0002-3158-3136", "type"=>"Person")
|
361
|
+
expect(subject.titles).to eq([{ "title" => "Grundlagen für die Entwicklung einer Open Scholarship-Strategie" }])
|
362
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
363
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
364
|
+
expect(subject.date).to eq("published"=>"2019-01-31", "updated"=>"2023-06-19")
|
365
|
+
expect(subject.descriptions.first["description"]).to start_with("Versionshistorie Version 1.0 — 16. Oktober 2017 – Erste Version des Dokuments")
|
366
|
+
expect(subject.publisher).to eq("name" => "Flavours of Open")
|
367
|
+
expect(subject.subjects).to eq([{ "subject" => "Humanities" },
|
368
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
369
|
+
"subject" => "FOS: Humanities",
|
370
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
371
|
+
expect(subject.language).to eq("de")
|
372
|
+
expect(subject.container).to eq("identifier" => "https://flavoursofopen.science", "identifierType" => "URL", "title" => "Flavours of Open", "type" => "Periodical")
|
373
|
+
expect(subject.references.length).to eq(55)
|
374
|
+
expect(subject.references.first).to eq("key" => "ref1", "url" => "http://oerstrategy.org/home/read-the-doc")
|
375
|
+
end
|
376
|
+
|
351
377
|
it "substack post with broken reference" do
|
352
378
|
input = "https://rogue-scholar.org/api/posts/2b105b29-acbc-4eae-9ff1-368803f36a4d"
|
353
379
|
subject = described_class.new(input: input)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commonmeta-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|