activitypub 0.3.0 → 0.3.2

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: bfcd0189a94cb5ee758ef31409bfee306f70f56d6c4a13aca63dd0a26bc41f39
4
- data.tar.gz: 5add381a4640f4e6b58748e67d342a105507ea09bea46c1e489dc45d9369362b
3
+ metadata.gz: 112ee8d199c09e5d9ff788e2bdf02b80e745513a8812d01cfbf377fb56daac3b
4
+ data.tar.gz: 7132a7c5d296315c29dad6672a511841a0557640d2b43139d1d4399c71e10487
5
5
  SHA512:
6
- metadata.gz: 6c966ce54df93f5953e943f2a22b99258ed9549ebd9646020dd3fb8306003ab3e6f7c911d7e98baa8d893abb2ffeee8fcc93af4c0fdbb35c4985280a7d961b1a
7
- data.tar.gz: 8bb7a8405035bfac1c09c939c03a200734b60c2c3b7169b5d316c8e1e9fb668a65f5fe603fe5e30550f614e6b97d681da3bc13b188218d3073829d76f5daa289
6
+ metadata.gz: b3f3d2e3788239c080ac7354fa5a02e27ac242911374d86b579473c0ae451f1d46eff8033b7ae91abb8cda24e865cf9c58ebfd2fbc2c86257b4ed01e3856f0a4
7
+ data.tar.gz: 8c7b248e72822ca739272b4315fc3256aefe96a333b81ca0676a5717162fd345a6ff2e3eef2ff3d989172abbad8124a652c5aa6cf105c1a7880643aa20c03c53
data/README.md CHANGED
@@ -3,6 +3,18 @@
3
3
  *Very* early start on a set of classes to serialize/deserialize
4
4
  ActivityPub/ActivityStream objects.
5
5
 
6
+ ## Goals
7
+
8
+ * To provide a fairly *minimalist*, *barebones* set of classes to
9
+ work with ActivityPub objects *as used* by major Fediverse apps.
10
+ * Matching real-world use will be prioritized over strict adherence
11
+ to the specs - my use-cases require me to be able to handle documents
12
+ even if they have errors. But I want to be able to *produce* output
13
+ that prefers standards compliance where it doesn't sacrifice interop.
14
+ * Support extensions and namespace used by e.g. Mastodon and others.
15
+ * Be easy to extend/layer new functionality on top of for anything
16
+ that doesn't fit in this core.
17
+
6
18
 
7
19
  ## Installation
8
20
 
@@ -1,11 +1,34 @@
1
1
 
2
+ require 'json'
3
+
2
4
  module ActivityPub
5
+ class Error < StandardError; end
6
+
7
+ def self.from_json(json)
8
+ h = JSON.parse(json)
9
+ type = h&.dig("type")
10
+
11
+ raise Error, "'type' attribute is required" if !type
12
+ raise NameError, "'type' attribute with '::' is not allowed" if !type.index("::").nil?
13
+
14
+ klass = ActivityPub.const_get(type)
3
15
 
16
+ ob = klass ? klass.new : nil
17
+
18
+ if ob
19
+ klass.ap_attributes.each do |attr|
20
+ ob.instance_variable_set("@#{attr}", h.dig(attr.to_s))
21
+ end
22
+ end
23
+
24
+ ob
25
+ end
26
+
4
27
  # This is not part of ActivityPub, but provides basic mechanisms
5
28
  # for serialization and dezerialisation.
6
29
  #
7
30
  class Base
8
- def _context = "https://www.w3.org/ns/activitystreams"
31
+ def _context = "https://www.w3.org/ns/activitystreams".freeze
9
32
  def _type = self.class.name.split("::").last
10
33
 
11
34
 
@@ -10,6 +10,7 @@ module ActivityPub
10
10
  end
11
11
 
12
12
  class Object < Base
13
+ ap_attr :id
13
14
  ap_attr :attachment, :attributedTo, :audience, :content, :context,
14
15
  :name, :endTime, :generator, :icon, :image, :inReplyTo, :location,
15
16
  :preview, :published, :replies, :startTime, :summary, :tag, :updated,
@@ -161,6 +162,10 @@ module ActivityPub
161
162
  end
162
163
 
163
164
  class Person < Actor
165
+
166
+ # Mastodon extension per
167
+ # https://docs-p.joinmastodon.org/spec/activitypub/#extensions
168
+ ap_attr :likes, :bookmarks, :manuallyApprovesFollowers
164
169
  end
165
170
 
166
171
  class Service < Actor
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActivityPub
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activitypub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vidar Hokstad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-02 00:00:00.000000000 Z
11
+ date: 2024-07-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: