commonmeta-ruby 3.3.14 → 3.3.15
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/bin/commonmeta +1 -1
- data/lib/commonmeta/cli.rb +5 -5
- 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
- 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
|
@@ -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
|
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
|