activitypub 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/README.md +15 -5
- data/lib/activitypub/base.rb +17 -2
- data/lib/activitypub/types.rb +47 -0
- data/lib/activitypub/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d6b1c47f6ac1051a3057f0ae8d57fe2d83c3c99aea99a45ff09c50f1f044a9b
|
4
|
+
data.tar.gz: df120e3bad47452d3a22bb400feab41db3b4c27502b16247f389c751373ccb9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc9e697ab7e8b67c040c482d9ba1f63ada540f5b2d08a5da689495670f960a71900b21e11548c8fe97ddc205bb5185afa5273c20df53bea9ddd36a1633d8cc6d
|
7
|
+
data.tar.gz: 27545eed23569575170cff387692c3d48ffe94c3afe0a9f417d37c121442852d3f5d145e4416ce5bec41c074a2e6ece46d4875183381c0c8b37d8bbb2d1821fd
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/README.md
CHANGED
@@ -3,18 +3,28 @@
|
|
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.
|
6
17
|
|
7
|
-
## Installation
|
8
18
|
|
9
|
-
|
19
|
+
## Installation
|
10
20
|
|
11
21
|
Install the gem and add to the application's Gemfile by executing:
|
12
22
|
|
13
|
-
$ bundle add
|
23
|
+
$ bundle add activitypub
|
14
24
|
|
15
25
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
16
26
|
|
17
|
-
$ gem install
|
27
|
+
$ gem install activitypub
|
18
28
|
|
19
29
|
## Usage
|
20
30
|
|
@@ -28,7 +38,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
28
38
|
|
29
39
|
## Contributing
|
30
40
|
|
31
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
41
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/vidarh/activitypub.
|
32
42
|
|
33
43
|
## License
|
34
44
|
|
data/lib/activitypub/base.rb
CHANGED
@@ -1,11 +1,26 @@
|
|
1
1
|
|
2
|
-
|
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
|
|
data/lib/activitypub/types.rb
CHANGED
@@ -124,6 +124,49 @@ module ActivityPub
|
|
124
124
|
ap_attr :oneOf, :anyOf, :closed
|
125
125
|
end
|
126
126
|
|
127
|
+
# ## Actor Types
|
128
|
+
|
129
|
+
# NOTE: *NOT* an ActivityPub object type
|
130
|
+
# FIXME: Should probably not be possible to instantiate
|
131
|
+
# directly.
|
132
|
+
#
|
133
|
+
class Actor < Object
|
134
|
+
# Per https://www.w3.org/TR/activitypub/#actors
|
135
|
+
# Section 4.1
|
136
|
+
|
137
|
+
# MUST have:
|
138
|
+
ap_attr :inbox, :outbox
|
139
|
+
|
140
|
+
# SHOULD have:
|
141
|
+
ap_attr :following, :followers
|
142
|
+
|
143
|
+
# MAY have:
|
144
|
+
ap_attr :liked, :streams, :preferredUsername,
|
145
|
+
:endpoints
|
146
|
+
|
147
|
+
|
148
|
+
# Per https://docs-p.joinmastodon.org/spec/activitypub/#extensions
|
149
|
+
# These are extensions used by Mastodon for Actor types
|
150
|
+
ap_attr :publicKey, :featured, :featuredTags,
|
151
|
+
:discoverable, :suspended
|
152
|
+
end
|
153
|
+
|
154
|
+
# FIXME: Add "toot:Emoji
|
155
|
+
# FIXME: Add PropertyValue
|
156
|
+
|
157
|
+
class Application < Actor
|
158
|
+
end
|
159
|
+
|
160
|
+
class Group < Actor
|
161
|
+
end
|
162
|
+
|
163
|
+
class Person < Actor
|
164
|
+
end
|
165
|
+
|
166
|
+
class Service < Actor
|
167
|
+
end
|
168
|
+
|
169
|
+
|
127
170
|
# ## Object types
|
128
171
|
|
129
172
|
class Relationship < Object
|
@@ -140,6 +183,10 @@ module ActivityPub
|
|
140
183
|
end
|
141
184
|
|
142
185
|
class Image < Document
|
186
|
+
|
187
|
+
# Mastodon extension per
|
188
|
+
# https://docs-p.joinmastodon.org/spec/activitypub/#extensions
|
189
|
+
ap_attr :focalPoint, :blurhash
|
143
190
|
end
|
144
191
|
|
145
192
|
class Video < Document
|
data/lib/activitypub/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2024-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -17,6 +17,7 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
+
- ".rspec"
|
20
21
|
- LICENSE.txt
|
21
22
|
- README.md
|
22
23
|
- Rakefile
|