jekyll-activity-pub 0.2.4 → 0.2.5

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: 9694a2d1df46c23e5c6ca51bfa88fb80a7df0709014be6fc0d48cae3e3e4cc6f
4
- data.tar.gz: 3f844b85c3e200db65e7d1de6cfd25ee59b8450b18bad191bd4036731443e1ee
3
+ metadata.gz: 55b6801d86becb5ee13ad13e9f46f50e54670d8c4fb77483b6f387efdec5657a
4
+ data.tar.gz: 8e7461bfc3508ebf9cde56f67c2b5b4967da5f15dd0586308a2b4b8b37fa326d
5
5
  SHA512:
6
- metadata.gz: 95cfe56875a41b933d99cecc6788cb44823bad551e88ac152ad6c5bb3d33742945be3b14d75ac4f4e23bc85d961c8b97bb27663ebf10da4c36b0dfd3c1d279c1
7
- data.tar.gz: f44349daeaed27d6e7d8ac8ff53a55a5b5925b635ca40785a156a1a58d83de4e7b65844d202e7d4138ff9046680863b1bb314855d70f7452247f2a5707f86336
6
+ metadata.gz: 26952a76b93dd2483926672ee6360a81562d7af097d5516949d3229f4c869e283f4a1939bf4fb1f6ec28a213b946a6f93f07ad7bd8c8d8f4451cd465e31dcd35
7
+ data.tar.gz: e33538ae2ef792e5d1405658ac2a936e869e6d1adca347b53dd0d00b2da6fab0ac38257353628c75c3482cb1405b7910f5071c3af0c732d1c043d59f65c1e025
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Implement FEP-1042 Peer to Peer Fediverse Activities by creating new
4
+ # activities and actors under supported protocols/schemes.
5
+ #
6
+ # Priority is low so it's the last thing we do. If you need to modify
7
+ # the original activities after this plugins runs, use priority lower
8
+ # than 8.
9
+ #
10
+ # The hook runs on post render so we can add the extra pages after
11
+ # activity generation but before write.
12
+ require_relative 'jekyll-activity-pub-fep-fffd'
13
+
14
+ Jekyll::Hooks.register %i[actor activity], :post_init, priority: 8 do |page|
15
+ Jekyll.logger.info 'FEP 1042:', 'Generating'
16
+
17
+ site = page.site
18
+
19
+ # Changes the URLs from a base URL to have a different scheme
20
+ #
21
+ # @param object [Any]
22
+ # @param base_url [String]
23
+ # @param scheme [String]
24
+ def convert_uris(object, base_url, scheme)
25
+ case object
26
+ when Hash
27
+ object.transform_values do |value|
28
+ convert_uris(value, base_url, scheme)
29
+ end
30
+ when Array
31
+ object.map do |value|
32
+ convert_uris(value, base_url, scheme)
33
+ end
34
+ when String
35
+ if object.start_with? base_url
36
+ Addressable::URI.parse(object).tap do |uri|
37
+ uri.scheme = scheme
38
+ end.to_s
39
+ else
40
+ object
41
+ end
42
+ when Nokogiri::HTML5::DocumentFragment
43
+ object.dup.tap do |html|
44
+ html.css('[src]').each do |element|
45
+ element['src'] = convert_uris(element['src'], base_url, scheme)
46
+ end
47
+ end
48
+ when Jekyll::ActivityPub::Helper
49
+ convert_uris(object.data, base_url, scheme)
50
+ else
51
+ object
52
+ end
53
+ end
54
+
55
+ uri = Addressable::URI.parse page.data['id']
56
+ url = page.data['url']
57
+
58
+ %w[https ipns hyper bittorrent].each do |protocol|
59
+ uri.scheme = protocol
60
+ url <<
61
+ Jekyll::ActivityPub::Link.new(site, uri.to_s, 'alternate', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"')
62
+ url <<
63
+ Jekyll::ActivityPub::Link.new(site, uri.to_s, 'alternate', 'application/activity+json')
64
+ end
65
+
66
+ %w[ipns hyper bittorrent].each do |protocol|
67
+ json = convert_uris(page.pruned_data, site.config['url'], protocol)
68
+ json['url'] = url
69
+
70
+ uri = Addressable::URI.parse(json['id'])
71
+ uri.path = uri.path.sub('.jsonld', ".#{protocol}.jsonld")
72
+ json['id'] = uri.to_s
73
+ # XXX: Only works on forward slash OSes
74
+ path = uri.path.sub(%r{\A/}, '')
75
+
76
+ Jekyll::PageWithoutAFile.new(site, site.source, File.dirname(path), File.basename(path)).tap do |alternate|
77
+ site.pages << alternate
78
+ alternate.content = json.to_json
79
+ end
80
+ end
81
+
82
+ Jekyll.logger.info 'FEP 1042:', 'Generated'
83
+ end
@@ -1,86 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Implement FEP-fffd Proxy Objects for Distributed Press by creating new
4
- # activities and actors under supported protocols/schemes.
5
- #
6
- # Priority is low so it's the last thing we do. If you need to modify
7
- # the original activities after this plugins runs, use priority 0.
8
- #
9
- # The hook runs on post render so we can add the extra pages after
10
- # activity generation but before write.
11
- Jekyll::Hooks.register :site, :post_render, priority: 1 do |site|
12
- require 'jekyll/activity_pub/link'
13
-
14
- # Changes the URLs from a base URL to have a different scheme
15
- #
16
- # @param object [Any]
17
- # @param base_url [String]
18
- # @param scheme [String]
19
- def convert_uris(object, base_url, scheme)
20
- case object
21
- when Hash
22
- object.transform_values do |value|
23
- convert_uris(value, base_url, scheme)
24
- end
25
- when Array
26
- object.map do |value|
27
- convert_uris(value, base_url, scheme)
28
- end
29
- when String
30
- if object.start_with? base_url
31
- Addressable::URI.parse(object).tap do |uri|
32
- uri.scheme = scheme
33
- end.to_s
34
- else
35
- object
36
- end
37
- when Nokogiri::HTML5::DocumentFragment
38
- object.dup.tap do |html|
39
- html.css('[src]').each do |element|
40
- element['src'] = convert_uris(element['src'], base_url, scheme)
41
- end
42
- end
43
- when Jekyll::ActivityPub::Helper
44
- convert_uris(object.data, base_url, scheme)
45
- else
46
- object
47
- end
48
- end
49
-
50
- site.pages.each do |page|
51
- case page
52
- when Jekyll::ActivityPub::Activity, Jekyll::ActivityPub::Actor
53
- uri = Addressable::URI.parse page.data['id']
54
- url = [ Jekyll::ActivityPub::Link.new(site, page.data['url'], 'canonical', 'text/html') ]
55
-
56
- %w[https ipns hyper bittorrent].each do |protocol|
57
- uri.scheme = protocol
58
- url <<
59
- Jekyll::ActivityPub::Link.new(site, uri.to_s, 'alternate', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"')
60
- url <<
61
- Jekyll::ActivityPub::Link.new(site, uri.to_s, 'alternate', 'application/activity+json')
62
- end
63
-
64
- %w[ipns hyper bittorrent].each do |protocol|
65
- json = convert_uris(page.pruned_data, site.config['url'], protocol)
66
- json['url'] = url
67
-
68
- uri = Addressable::URI.parse(json['id'])
69
- uri.path = uri.path.sub('.jsonld', ".#{protocol}.jsonld")
70
- json['id'] = uri.to_s
71
- path = uri.path.sub(%r{\A/}, '')
72
-
73
- Jekyll::PageWithoutAFile.new(site, site.source, File.dirname(path), File.basename(path)).tap do |alternate|
74
- site.pages << alternate
75
-
76
- alternate.output = alternate.content = json.to_json
77
- end
78
- end
79
-
80
- page.data['url'] = url
81
- page.output = page.content
82
-
83
- Jekyll.logger.info 'FEP fffd:', 'Generated'
84
- end
85
- end
86
- end
3
+ require_relative 'jekyll-activity-pub-fep-1042'
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'jekyll-activity-pub-fep-fffd'
4
+
5
+ # Add a license to each activity by finding a page/post with layout
6
+ # "license"
7
+ Jekyll::Hooks.register :activity, :post_init, priority: 9 do |activity|
8
+ Jekyll.logger.info 'FEP fffd:', 'Adding license'
9
+
10
+ site = activity.site
11
+
12
+ # Look for a page or a post
13
+ license = site.pages.find do |page|
14
+ page.data['layout'] == 'license'
15
+ end
16
+
17
+ # Find the first one in case there are several
18
+ license ||= activity.renderer.payload['site']['posts'].find do |post|
19
+ post.data['layout'] == 'license'
20
+ end
21
+
22
+ if license
23
+ Jekyll.logger.info 'FEP fffd:', "License \"#{license.data['title']}\" found"
24
+ else
25
+ Jekyll.logger.info 'FEP fffd:', 'License not found, skipping...'
26
+ next
27
+ end
28
+
29
+ activity.data['url'] << Jekyll::ActivityPub::Link.new(site, activity.absolute_url(license.url), 'license', 'text/html')
30
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Implement FEP-fffd Proxy Objects by changing the url attribute to an
4
+ # array of Link objects.
5
+ #
6
+ # Priority is low so it's the last thing we do. If you need to modify
7
+ # the original activities after this plugins runs, use priority lower
8
+ # than 10.
9
+ Jekyll::Hooks.register %i[actor activity], :post_init, priority: :low do |page|
10
+ require 'jekyll/activity_pub/link'
11
+
12
+ site = page.site
13
+
14
+ Jekyll.logger.info 'FEP fffd:', 'Generating'
15
+
16
+ page.data['url'] = [ Jekyll::ActivityPub::Link.new(site, page.data['url'], 'canonical', 'text/html') ]
17
+
18
+ Jekyll.logger.info 'FEP fffd:', 'Generated'
19
+ end
20
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-activity-pub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sutty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-18 00:00:00.000000000 Z
11
+ date: 2024-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: distributed-press-api-client
@@ -141,7 +141,10 @@ files:
141
141
  - README.md
142
142
  - lib/jekyll-activity-pub-absolute-assets.rb
143
143
  - lib/jekyll-activity-pub-assets-as-attachments.rb
144
+ - lib/jekyll-activity-pub-fep-1042.rb
144
145
  - lib/jekyll-activity-pub-fep-fffd-distributed-press.rb
146
+ - lib/jekyll-activity-pub-fep-fffd-license.rb
147
+ - lib/jekyll-activity-pub-fep-fffd.rb
145
148
  - lib/jekyll-activity-pub-link-iframes.rb
146
149
  - lib/jekyll-activity-pub-nokogiri.rb
147
150
  - lib/jekyll-activity-pub.rb