activitypub 0.3.0 → 0.3.1

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