commonmeta-ruby 3.3.1 → 3.3.3

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: 1a5ad35cfa39e4b1aadd232585375001d87f0a14c5f5638b6574c6982bb130a6
4
- data.tar.gz: d7104f032539d68ee797c35e6f86d69fd8514691babec286ab3024fa49bac0cf
3
+ metadata.gz: 2eb50e7e66b90175ca4b2176de9bd89e7898e06efdb6a4dbae46532233f2736c
4
+ data.tar.gz: 8e8161a7bd4064a04956d47d3945f4165cf147a559488ad943c5e776c3c666d2
5
5
  SHA512:
6
- metadata.gz: 86c9391a579504409de79cd3a2d449a7725a0b46014cde46e5ef5506b51e0595f5aa4a2404ac49fca20c8d8673b8b895234127e42ddf9314dd52214a7bdb9973
7
- data.tar.gz: 26d1153f74db838c65c99b5229f2031c0ddb90b907fc3f7f51210bd177cf78e8417814437284378e38a86fb829bf36ccb1c6d5b3a7ac6d35678d870fac918e93
6
+ metadata.gz: 344a8db3f61bad8f9f9b289427d0de3d1ac685e7c93dd092ebb54055969986a76c3f5e763b2c5ccd37d73b4c9de5350c6009b5927d3f943f72b6c213436c598a
7
+ data.tar.gz: 432286ef1601030abcd7b76bd814c399a12c75f2f438e71c8f1a64dcc8a03008be26a5712eeeab4d38f30085f0e3e0bff832fa7a831c13a41d9e50214d53ff8a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- commonmeta-ruby (3.3.1)
4
+ commonmeta-ruby (3.3.3)
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)
@@ -16,6 +16,7 @@ PATH
16
16
  json-ld-preloaded (~> 3.2, >= 3.2.2)
17
17
  json_schemer (~> 1.0.1)
18
18
  jsonlint (~> 0.3.0)
19
+ jwt (~> 2.7, >= 2.7.1)
19
20
  loofah (~> 2.19)
20
21
  namae (~> 1.0)
21
22
  postrank-uri (~> 1.1)
@@ -111,6 +112,7 @@ GEM
111
112
  jsonlint (0.3.0)
112
113
  oj (~> 3)
113
114
  optimist (~> 3)
115
+ jwt (2.7.1)
114
116
  latex-decode (0.4.0)
115
117
  link_header (0.0.8)
116
118
  llhttp-ffi (0.4.0)
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 encode_by_uuid json_feed_not_indexed json_feed_unregistered json_feed_by_blog)).empty?
5
+ if (ARGV & %w(--version -v help --help encode decode encode_id decode_id encode_by_blog encode_by_uuid json_feed_not_indexed json_feed_unregistered json_feed_by_blog ghost_token)).empty?
6
6
  Commonmeta::CLI.start(ARGV.dup.unshift("convert"))
7
7
  else
8
8
  Commonmeta::CLI.start
data/commonmeta.gemspec CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency 'json-ld-preloaded', '~> 3.2', '>= 3.2.2'
33
33
  s.add_dependency 'jsonlint', '~> 0.3.0'
34
34
  s.add_dependency 'json_schemer', '~> 1.0.1'
35
+ s.add_dependency 'jwt', '~> 2.7', '>= 2.7.1'
35
36
  s.add_dependency 'loofah', '~> 2.19'
36
37
  s.add_dependency 'namae', '~> 1.0'
37
38
  s.add_dependency 'postrank-uri', '~> 1.1'
@@ -59,7 +59,7 @@ module Commonmeta
59
59
  desc "", "encode"
60
60
 
61
61
  def encode(prefix)
62
- return nil unless prefix.present?
62
+ return nil unless validate_prefix(prefix).present?
63
63
  puts encode_doi(prefix)
64
64
  end
65
65
 
@@ -115,6 +115,12 @@ module Commonmeta
115
115
  puts get_json_feed_by_blog(id)
116
116
  end
117
117
 
118
+ desc "", "ghost_token"
119
+
120
+ def ghost_token(admin_api_key)
121
+ puts generate_ghost_token(admin_api_key)
122
+ end
123
+
118
124
  default_task :convert
119
125
  end
120
126
  end
@@ -1385,7 +1385,7 @@ module Commonmeta
1385
1385
 
1386
1386
  def encode_doi(prefix, options = {})
1387
1387
  return nil unless prefix.present?
1388
-
1388
+
1389
1389
  # DOI suffix is a generated from a random number, encoded in base32
1390
1390
  # suffix has 8 digits plus two checksum digits. With base32 there are
1391
1391
  # 32 possible digits, so 8 digits gives 32^8 possible combinations
@@ -1452,5 +1452,25 @@ module Commonmeta
1452
1452
  def json_feed_item_by_uuid_url(uuid)
1453
1453
  "https://rogue-scholar.org/api/posts/#{uuid}"
1454
1454
  end
1455
+
1456
+ def generate_ghost_token(admin_api_key)
1457
+ # from https://ghost.org/docs/admin-api/
1458
+
1459
+ # Split the key into ID and SECRET
1460
+ id, secret = admin_api_key.split(":")
1461
+
1462
+ # Prepare header and payload
1463
+ iat = Time.now.to_i
1464
+
1465
+ header = { alg: "HS256", typ: "JWT", kid: id }
1466
+ payload = {
1467
+ iat: iat,
1468
+ exp: iat + 5 * 60,
1469
+ aud: "/admin/",
1470
+ }
1471
+
1472
+ # Create the token (including decoding secret)
1473
+ JWT.encode payload, [secret].pack("H*"), "HS256", header
1474
+ end
1455
1475
  end
1456
1476
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Commonmeta
4
- VERSION = '3.3.1'
4
+ VERSION = '3.3.3'
5
5
  end
data/lib/commonmeta.rb CHANGED
@@ -8,6 +8,7 @@ require 'postrank-uri'
8
8
  require 'bibtex'
9
9
  require 'loofah'
10
10
  require 'json/ld'
11
+ require 'jwt'
11
12
  require 'rdf/turtle'
12
13
  require 'rdf/rdfxml'
13
14
  require 'logger'
data/spec/cli_spec.rb CHANGED
@@ -312,13 +312,13 @@ describe Commonmeta::CLI do
312
312
  end
313
313
 
314
314
  describe "encode", vcr: true do
315
- it "blog prefix" do
315
+ it "valid doi prefix" do
316
316
  input = "10.53731"
317
317
  expect { subject.encode input }.to output(/https:\/\/doi.org\/10.53731/).to_stdout
318
318
  end
319
319
 
320
- it "blog prefix missing" do
321
- input = ""
320
+ it "invalid doi prefix" do
321
+ input = "11.1234"
322
322
  expect { subject.encode input }.to output("").to_stdout
323
323
  end
324
324
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonmeta-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.1
4
+ version: 3.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
@@ -248,6 +248,26 @@ dependencies:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
250
  version: 1.0.1
251
+ - !ruby/object:Gem::Dependency
252
+ name: jwt
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '2.7'
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: 2.7.1
261
+ type: :runtime
262
+ prerelease: false
263
+ version_requirements: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - "~>"
266
+ - !ruby/object:Gem::Version
267
+ version: '2.7'
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: 2.7.1
251
271
  - !ruby/object:Gem::Dependency
252
272
  name: loofah
253
273
  requirement: !ruby/object:Gem::Requirement