commonmeta-ruby 3.3.1 → 3.3.3

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