activitypub 0.3.0 → 0.3.1

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: 3d6b1c47f6ac1051a3057f0ae8d57fe2d83c3c99aea99a45ff09c50f1f044a9b
4
+ data.tar.gz: df120e3bad47452d3a22bb400feab41db3b4c27502b16247f389c751373ccb9b
5
5
  SHA512:
6
- metadata.gz: 6c966ce54df93f5953e943f2a22b99258ed9549ebd9646020dd3fb8306003ab3e6f7c911d7e98baa8d893abb2ffeee8fcc93af4c0fdbb35c4985280a7d961b1a
7
- data.tar.gz: 8bb7a8405035bfac1c09c939c03a200734b60c2c3b7169b5d316c8e1e9fb668a65f5fe603fe5e30550f614e6b97d681da3bc13b188218d3073829d76f5daa289
6
+ metadata.gz: bc9e697ab7e8b67c040c482d9ba1f63ada540f5b2d08a5da689495670f960a71900b21e11548c8fe97ddc205bb5185afa5273c20df53bea9ddd36a1633d8cc6d
7
+ data.tar.gz: 27545eed23569575170cff387692c3d48ffe94c3afe0a9f417d37c121442852d3f5d145e4416ce5bec41c074a2e6ece46d4875183381c0c8b37d8bbb2d1821fd
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,26 @@
1
1
 
2
- module ActivityPub
2
+ require 'json'
3
3
 
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)
15
+
16
+ klass ? klass.new : nil
17
+ end
18
+
4
19
  # This is not part of ActivityPub, but provides basic mechanisms
5
20
  # for serialization and dezerialisation.
6
21
  #
7
22
  class Base
8
- def _context = "https://www.w3.org/ns/activitystreams"
23
+ def _context = "https://www.w3.org/ns/activitystreams".freeze
9
24
  def _type = self.class.name.split("::").last
10
25
 
11
26
 
@@ -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.1"
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.1
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: