commonmeta-ruby 3.3.13 → 3.3.15
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 +4 -4
- data/Gemfile.lock +2 -2
- data/bin/commonmeta +1 -1
- data/lib/commonmeta/cli.rb +5 -5
- data/lib/commonmeta/crossref_utils.rb +2 -2
- data/lib/commonmeta/readers/json_feed_reader.rb +2 -2
- data/lib/commonmeta/utils.rb +15 -15
- data/lib/commonmeta/version.rb +1 -1
- data/spec/cli_spec.rb +4 -4
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_id.yml +62 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_id_unknown_uuid.yml +49 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_id.yml +65 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_id_specific_prefix.yml +62 -0
- data/spec/readers/json_feed_reader_spec.rb +4 -4
- data/spec/writers/crossref_xml_writer_spec.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7f58c5181ad8210359b3e6cb897e6a7c0b66d6065f2dda0836998e1a59939af
|
4
|
+
data.tar.gz: 780639668c9bc7b2fec43061818db60e3c05d4c6e430e6d03349d02ae781eacd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65ab7d09ed4a84c4ba153a94f142de3a4878899832135883d83123b6bfdfa48b7c21f47b87ae6f385a158d874316ebed4236d531bd8f9921ce2a4802561b2015
|
7
|
+
data.tar.gz: b3970a10d049bcce65a9ac9a2f357b5569422335b2cc317877821aa7dddb3a0aa29070c2ab196dcccdfbd02f670f827d9515083c480f94c2686c34b3ceb5b524
|
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.15)
|
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)
|
@@ -127,7 +127,7 @@ GEM
|
|
127
127
|
minitest (5.18.1)
|
128
128
|
multi_json (1.15.0)
|
129
129
|
namae (1.1.1)
|
130
|
-
nokogiri (1.15.
|
130
|
+
nokogiri (1.15.3-arm64-darwin)
|
131
131
|
racc (~> 1.4)
|
132
132
|
oj (3.15.0)
|
133
133
|
optimist (3.0.1)
|
data/bin/commonmeta
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require File.expand_path("../../lib/commonmeta", __FILE__)
|
4
4
|
|
5
|
-
if (ARGV & %w(--version -v help --help encode decode encode_id decode_id encode_by_blog
|
5
|
+
if (ARGV & %w(--version -v help --help encode decode encode_id decode_id encode_by_blog encode_by_id json_feed_not_indexed json_feed_unregistered json_feed_by_blog update_ghost_post)).empty?
|
6
6
|
Commonmeta::CLI.start(ARGV.dup.unshift("convert"))
|
7
7
|
else
|
8
8
|
Commonmeta::CLI.start
|
data/lib/commonmeta/cli.rb
CHANGED
@@ -77,10 +77,10 @@ module Commonmeta
|
|
77
77
|
puts encode_doi(prefix)
|
78
78
|
end
|
79
79
|
|
80
|
-
desc "", "
|
80
|
+
desc "", "encode_by_id"
|
81
81
|
|
82
|
-
def
|
83
|
-
prefix =
|
82
|
+
def encode_by_id(id)
|
83
|
+
prefix = get_doi_prefix_by_json_feed_item_id(id)
|
84
84
|
return nil unless prefix.present?
|
85
85
|
puts encode_doi(prefix)
|
86
86
|
end
|
@@ -117,8 +117,8 @@ module Commonmeta
|
|
117
117
|
|
118
118
|
desc "", "update_ghost_post"
|
119
119
|
|
120
|
-
def update_ghost_post(
|
121
|
-
puts update_ghost_post_via_api(
|
120
|
+
def update_ghost_post(id)
|
121
|
+
puts update_ghost_post_via_api(id)
|
122
122
|
end
|
123
123
|
|
124
124
|
default_task :convert
|
@@ -161,8 +161,8 @@ module Commonmeta
|
|
161
161
|
xml.author(ref["author"]) if ref["author"].present?
|
162
162
|
xml.volume(ref["volume"]) if ref["volume"].present?
|
163
163
|
xml.first_page(ref["first_page"]) if ref["first_page"].present?
|
164
|
-
xml.cYear(ref["
|
165
|
-
xml.article_title(ref["
|
164
|
+
xml.cYear(ref["publicationYear"]) if ref["publicationYear"].present?
|
165
|
+
xml.article_title(ref["title"]) if ref["title"].present?
|
166
166
|
xml.doi(doi_from_url(ref["doi"])) if ref["doi"].present?
|
167
167
|
xml.unstructured_citation(ref["url"]) if ref["url"].present?
|
168
168
|
end
|
@@ -147,10 +147,10 @@ module Commonmeta
|
|
147
147
|
post.to_h.dig("prefix")
|
148
148
|
end
|
149
149
|
|
150
|
-
def
|
150
|
+
def get_doi_prefix_by_json_feed_item_id(id)
|
151
151
|
# for generating a random DOI. Prefix is based on the blog id.
|
152
152
|
|
153
|
-
url =
|
153
|
+
url = json_feed_item_by_id_url(id)
|
154
154
|
response = HTTP.get(url)
|
155
155
|
return nil unless response.status.success?
|
156
156
|
|
data/lib/commonmeta/utils.rb
CHANGED
@@ -1400,10 +1400,10 @@ module Commonmeta
|
|
1400
1400
|
"https://doi.org/#{prefix}/#{str}"
|
1401
1401
|
end
|
1402
1402
|
|
1403
|
-
def
|
1404
|
-
# look up prefix for rogue scholar blog associated with
|
1405
|
-
# returns nil if unknown
|
1406
|
-
|
1403
|
+
def encode_doi_for_id(id, options = {})
|
1404
|
+
# look up prefix for rogue scholar blog associated with id
|
1405
|
+
# returns nil if unknown id or doi registration is not enabled for blog
|
1406
|
+
json_feed_by_id(id)
|
1407
1407
|
# DOI suffix is a generated from a random number, encoded in base32
|
1408
1408
|
# suffix has 8 digits plus two checksum digits. With base32 there are
|
1409
1409
|
# 32 possible digits, so 8 digits gives 32^8 possible combinations
|
@@ -1449,8 +1449,8 @@ module Commonmeta
|
|
1449
1449
|
"https://rogue-scholar.org/api/blogs/#{blog_id}"
|
1450
1450
|
end
|
1451
1451
|
|
1452
|
-
def
|
1453
|
-
"https://rogue-scholar.org/api/posts/#{
|
1452
|
+
def json_feed_item_by_id_url(id)
|
1453
|
+
"https://rogue-scholar.org/api/posts/#{id}"
|
1454
1454
|
end
|
1455
1455
|
|
1456
1456
|
def generate_ghost_token(admin_api_key)
|
@@ -1473,43 +1473,43 @@ module Commonmeta
|
|
1473
1473
|
JWT.encode payload, [secret].pack("H*"), "HS256", header
|
1474
1474
|
end
|
1475
1475
|
|
1476
|
-
def update_ghost_post_via_api(
|
1476
|
+
def update_ghost_post_via_api(id)
|
1477
1477
|
api_key = ENV["API_KEY"]
|
1478
1478
|
api_url = ENV["API_URL"]
|
1479
1479
|
|
1480
|
-
return nil unless
|
1480
|
+
return nil unless id.present? && api_key.present? && api_url.present?
|
1481
1481
|
|
1482
1482
|
# generate short lived jwt for ghost admin api
|
1483
1483
|
ghost_jwt = generate_ghost_token(api_key)
|
1484
1484
|
|
1485
1485
|
# get post url and doi from Rogue Scholar API
|
1486
|
-
url =
|
1486
|
+
url = json_feed_item_by_id_url(id)
|
1487
1487
|
response = HTTP.get(url)
|
1488
1488
|
return nil unless response.status.success?
|
1489
1489
|
|
1490
1490
|
post = JSON.parse(response.body.to_s)
|
1491
1491
|
url = post.to_h.dig("url")
|
1492
|
-
doi = validate_doi(post.to_h.dig("
|
1492
|
+
doi = validate_doi(post.to_h.dig("doi"))
|
1493
1493
|
doi = doi_as_url(doi)
|
1494
1494
|
|
1495
1495
|
return nil unless url.present? && doi.present?
|
1496
1496
|
|
1497
|
-
# get
|
1497
|
+
# get post_id and updated_at from ghost api
|
1498
1498
|
slug = url.chomp("/").split("/").last
|
1499
1499
|
ghost_url = "#{api_url}/ghost/api/admin/posts/slug/#{slug}/"
|
1500
1500
|
response = HTTP.auth("Ghost #{ghost_jwt}").get(ghost_url)
|
1501
1501
|
return nil unless response.status.success?
|
1502
1502
|
|
1503
1503
|
ghost_post = JSON.parse(response.body.to_s).dig("posts").first
|
1504
|
-
|
1504
|
+
ghost_id = ghost_post.dig("id")
|
1505
1505
|
updated_at = ghost_post.dig("updated_at")
|
1506
1506
|
|
1507
|
-
return nil unless
|
1507
|
+
return nil unless ghost_id.present? && updated_at.present?
|
1508
1508
|
|
1509
1509
|
# update post canonical_url with new doi
|
1510
|
-
ghost_url = "#{api_url}/ghost/api/admin/posts/#{
|
1510
|
+
ghost_url = "#{api_url}/ghost/api/admin/posts/#{ghost_id}/"
|
1511
1511
|
response = HTTP.auth("Ghost #{ghost_jwt}").headers('Content-Type' => "application/json", 'Accept-Version' => 'v5').put(ghost_url, :json => { 'posts' => [{ 'canonical_url' => doi, 'updated_at' => updated_at }] })
|
1512
|
-
"#{response.status} DOI #{doi} added to post #{
|
1512
|
+
"#{response.status} DOI #{doi} added to post #{ghost_id}"
|
1513
1513
|
end
|
1514
1514
|
end
|
1515
1515
|
end
|
data/lib/commonmeta/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -332,14 +332,14 @@ describe Commonmeta::CLI do
|
|
332
332
|
expect { subject.encode_by_blog input }.to output("").to_stdout
|
333
333
|
end
|
334
334
|
|
335
|
-
it "
|
335
|
+
it "by_id" do
|
336
336
|
input = "2b22bbba-bcba-4072-94cc-3f88442fff88"
|
337
|
-
expect { subject.
|
337
|
+
expect { subject.encode_by_id input }.to output(/https:\/\/doi.org\/10.54900/).to_stdout
|
338
338
|
end
|
339
339
|
|
340
|
-
it "
|
340
|
+
it "by_id unknown uuid" do
|
341
341
|
input = "2b22bbba-bcba-4072-94cc-3f88442"
|
342
|
-
expect { subject.
|
342
|
+
expect { subject.encode_by_id input }.to output("").to_stdout
|
343
343
|
end
|
344
344
|
end
|
345
345
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/2b22bbba-bcba-4072-94cc-3f88442fff88
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Connection:
|
11
|
+
- close
|
12
|
+
Host:
|
13
|
+
- rogue-scholar.org
|
14
|
+
User-Agent:
|
15
|
+
- http.rb/5.1.1
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '1894'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sun, 09 Jul 2023 11:52:35 GMT
|
31
|
+
Etag:
|
32
|
+
- '"15o6g3vltsa1gm"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[[...params]]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::flst9-1688903555530-c16d7c4324cc
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"2b22bbba-bcba-4072-94cc-3f88442fff88","doi":"https://doi.org/10.54900/6p6re-xyj61","url":"https://upstream.force11.org/an-initial-scholarly-ai-taxonomy","title":"An
|
48
|
+
Initial Scholarly AI Taxonomy","summary":"Although advances in artificial
|
49
|
+
intelligence (AI)1 have been unfolding for over decades, the progress in the
|
50
|
+
last six months has come faster than anyone expected. The public release of
|
51
|
+
ChatGPT in November 2022, in particular, has opened up new possibilities and
|
52
|
+
heightened awareness of AI''s potential role in various aspects of our work
|
53
|
+
and life.It follows that in the context of the publishing industry, AI also
|
54
|
+
holds the promise of transforming multiple facets of the publishing process2.
|
55
|
+
In this...","date_published":"2023-04-11T08:00:34+00:00","date_modified":"2023-04-11T15:29:38+00:00","date_indexed":"2023-06-27T10:51:38.566+00:00","authors":[{"url":null,"name":"Adam
|
56
|
+
Hyde"},{"url":"https://orcid.org/0000-0002-7378-2408","name":"John Chodacki"},{"url":null,"name":"Paul
|
57
|
+
Shannon"}],"image":"https://upstream.force11.org/content/images/2023/04/1-1.png","tags":["Thought
|
58
|
+
Pieces"],"language":"en","references":[],"blog_id":"pm0p222","blog":{"id":"pm0p222","title":"Upstream","description":"The
|
59
|
+
community blog for all things Open Research.","language":"en","favicon":"https://upstream.force11.org/favicon.png","feed_url":"https://upstream.force11.org/atom-complete/","home_page_url":"https://upstream.force11.org","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T07:23:49+00:00","indexed_at":"2023-01-13","feed_format":"application/atom+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Ghost
|
60
|
+
5.25","category":"Humanities","prefix":"10.54900","modified_at":"2023-07-04T21:15:51+00:00","version":"https://jsonfeed.org/version/1.1","backlog":false,"current_feed_url":"https://upstream.force11.org/atom/","expired":null}}'
|
61
|
+
recorded_at: Sun, 09 Jul 2023 11:52:35 GMT
|
62
|
+
recorded_with: VCR 6.2.0
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/2b22bbba-bcba-4072-94cc-3f88442
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Connection:
|
11
|
+
- close
|
12
|
+
Host:
|
13
|
+
- rogue-scholar.org
|
14
|
+
User-Agent:
|
15
|
+
- http.rb/5.1.1
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 404
|
19
|
+
message: Not Found
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '28'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sun, 09 Jul 2023 11:52:35 GMT
|
31
|
+
Etag:
|
32
|
+
- '"jtxxi9yf69s"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[[...params]]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::r2jnr-1688903554372-bc572f9c2183
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"message":"Post not found"}'
|
48
|
+
recorded_at: Sun, 09 Jul 2023 11:52:35 GMT
|
49
|
+
recorded_with: VCR 6.2.0
|
data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_id.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/1898d2d7-4d87-4487-96c4-3073cf99e9a5
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Connection:
|
11
|
+
- close
|
12
|
+
Host:
|
13
|
+
- rogue-scholar.org
|
14
|
+
User-Agent:
|
15
|
+
- http.rb/5.1.1
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '2134'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sun, 09 Jul 2023 11:52:38 GMT
|
31
|
+
Etag:
|
32
|
+
- '"7l6hjo0ui11na"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[[...params]]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::ndt5n-1688903557843-b8eb7a7cc5a1
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"1898d2d7-4d87-4487-96c4-3073cf99e9a5","doi":"https://doi.org/10.59350/63055-a8604","url":"http://sfmatheson.blogspot.com/2023/01/quintessence-of-dust-2023-restart-why.html","title":"Quintessence
|
48
|
+
of Dust 2023 restart: the why","summary":"It''s early January 2023, a little
|
49
|
+
before sunset in Tucson. Live image below, showing the glorious Santa Catalina
|
50
|
+
mountains (the snow on the upper reaches is more apparent earlier in the day)
|
51
|
+
and my dinner preparations (shrimp and veggies on the grill).I''ve decided
|
52
|
+
to start writing here at Quintessence of Dust, after another long hiatus.
|
53
|
+
Here are some of my reasons.1. I like to write, and I have things to say,
|
54
|
+
and I self-identify as an author. For eight years, I have co-organized and
|
55
|
+
taught in...","date_published":"2023-01-09T03:03:00+00:00","date_modified":"2023-04-02T21:17:07+00:00","date_indexed":"2023-06-28T19:01:12.223+00:00","authors":[{"url":null,"name":"Stephen
|
56
|
+
Matheson"}],"image":null,"tags":["Introduction"],"language":"en","references":[],"blog_id":"5764g49","blog":{"id":"5764g49","title":"Quintessence
|
57
|
+
of Dust","description":"<i>Quintessence of Dust</i> explores science, society,
|
58
|
+
and human nature, focusing on genetics, development, evolution, neuroscience,
|
59
|
+
systems biology, and topics related to scientific literacy. I occasionally
|
60
|
+
discuss intelligent design, creationism, science denial, and other political/social
|
61
|
+
influences on scientific literacy. Additional topics: philosophy, baseball,
|
62
|
+
scientific culture, and Shakespeare. My main theme is <b><u>scientific explanation</u></b>.","language":"en","favicon":null,"feed_url":"http://sfmatheson.blogspot.com/feeds/posts/default","home_page_url":"http://sfmatheson.blogspot.com/","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T14:21:27+00:00","indexed_at":"2023-04-18","feed_format":"application/atom+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Blogger
|
63
|
+
7.00","category":"Social Sciences","prefix":"10.59350","modified_at":"2023-07-05T03:41:45+00:00","version":"https://jsonfeed.org/version/1.1","backlog":true,"current_feed_url":null,"expired":null}}'
|
64
|
+
recorded_at: Sun, 09 Jul 2023 11:52:38 GMT
|
65
|
+
recorded_with: VCR 6.2.0
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/2b22bbba-bcba-4072-94cc-3f88442fff88
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Connection:
|
11
|
+
- close
|
12
|
+
Host:
|
13
|
+
- rogue-scholar.org
|
14
|
+
User-Agent:
|
15
|
+
- http.rb/5.1.1
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '1894'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sun, 09 Jul 2023 11:52:37 GMT
|
31
|
+
Etag:
|
32
|
+
- '"15o6g3vltsa1gm"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[[...params]]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::g259v-1688903557225-686006d77fb3
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"2b22bbba-bcba-4072-94cc-3f88442fff88","doi":"https://doi.org/10.54900/6p6re-xyj61","url":"https://upstream.force11.org/an-initial-scholarly-ai-taxonomy","title":"An
|
48
|
+
Initial Scholarly AI Taxonomy","summary":"Although advances in artificial
|
49
|
+
intelligence (AI)1 have been unfolding for over decades, the progress in the
|
50
|
+
last six months has come faster than anyone expected. The public release of
|
51
|
+
ChatGPT in November 2022, in particular, has opened up new possibilities and
|
52
|
+
heightened awareness of AI''s potential role in various aspects of our work
|
53
|
+
and life.It follows that in the context of the publishing industry, AI also
|
54
|
+
holds the promise of transforming multiple facets of the publishing process2.
|
55
|
+
In this...","date_published":"2023-04-11T08:00:34+00:00","date_modified":"2023-04-11T15:29:38+00:00","date_indexed":"2023-06-27T10:51:38.566+00:00","authors":[{"url":null,"name":"Adam
|
56
|
+
Hyde"},{"url":"https://orcid.org/0000-0002-7378-2408","name":"John Chodacki"},{"url":null,"name":"Paul
|
57
|
+
Shannon"}],"image":"https://upstream.force11.org/content/images/2023/04/1-1.png","tags":["Thought
|
58
|
+
Pieces"],"language":"en","references":[],"blog_id":"pm0p222","blog":{"id":"pm0p222","title":"Upstream","description":"The
|
59
|
+
community blog for all things Open Research.","language":"en","favicon":"https://upstream.force11.org/favicon.png","feed_url":"https://upstream.force11.org/atom-complete/","home_page_url":"https://upstream.force11.org","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T07:23:49+00:00","indexed_at":"2023-01-13","feed_format":"application/atom+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Ghost
|
60
|
+
5.25","category":"Humanities","prefix":"10.54900","modified_at":"2023-07-04T21:15:51+00:00","version":"https://jsonfeed.org/version/1.1","backlog":false,"current_feed_url":"https://upstream.force11.org/atom/","expired":null}}'
|
61
|
+
recorded_at: Sun, 09 Jul 2023 11:52:37 GMT
|
62
|
+
recorded_with: VCR 6.2.0
|
@@ -425,13 +425,13 @@ describe Commonmeta::Metadata, vcr: true do
|
|
425
425
|
expect(response).to eq("10.59350")
|
426
426
|
end
|
427
427
|
|
428
|
-
it "by blog post
|
429
|
-
response = subject.
|
428
|
+
it "by blog post id" do
|
429
|
+
response = subject.get_doi_prefix_by_json_feed_item_id("1898d2d7-4d87-4487-96c4-3073cf99e9a5")
|
430
430
|
expect(response).to eq("10.59350")
|
431
431
|
end
|
432
432
|
|
433
|
-
it "by blog post
|
434
|
-
response = subject.
|
433
|
+
it "by blog post id specific prefix" do
|
434
|
+
response = subject.get_doi_prefix_by_json_feed_item_id("2b22bbba-bcba-4072-94cc-3f88442fff88")
|
435
435
|
expect(response).to eq("10.54900")
|
436
436
|
end
|
437
437
|
end
|
@@ -225,7 +225,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
225
225
|
expect(crossref_xml.dig("titles",
|
226
226
|
"title")).to eq("The Research Software Alliance (ReSA)")
|
227
227
|
expect(crossref_xml.dig("citation_list", "citation").length).to eq(11)
|
228
|
-
expect(crossref_xml.dig("citation_list", "citation").last).to eq("doi"=>"10.5281/zenodo.3699950", "key"=>"ref11")
|
228
|
+
expect(crossref_xml.dig("citation_list", "citation").last).to eq("article_title"=>"The Research Software Alliance (ReSA) and the community landscape", "cYear"=>"2020", "doi"=>"10.5281/zenodo.3699950", "key"=>"ref11")
|
229
229
|
expect(crossref_xml.dig('item_number')).to eq("__content__"=>"954f81380ecd409087c5cef1297f1470", "item_number_type"=>"uuid")
|
230
230
|
expect(crossref_xml.dig('group_title')).to eq('Humanities')
|
231
231
|
end
|
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.15
|
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-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -782,6 +782,8 @@ files:
|
|
782
782
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/doi_prefix/doi_prefix_by_uuid.yml
|
783
783
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog.yml
|
784
784
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog_unknown_blog_id.yml
|
785
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_id.yml
|
786
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_id_unknown_uuid.yml
|
785
787
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid.yml
|
786
788
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid_unknown_uuid.yml
|
787
789
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/find_from_format_by_id/crossref.yml
|
@@ -861,6 +863,8 @@ files:
|
|
861
863
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datacite_metadata/funding_references.yml
|
862
864
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datacite_metadata/subject_scheme.yml
|
863
865
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_id.yml
|
866
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_id.yml
|
867
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_id_specific_prefix.yml
|
864
868
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid.yml
|
865
869
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid_specific_prefix.yml
|
866
870
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/by_blog_id.yml
|