ActivityPub source implementation for Awakari. Actually, just another Fedivers server that follows specified publishers on behalf of a user.
Awakari is a service consuming public only updates from various sources and filters these for a user. The purpose is only to notify user in real time and provide a link to the source (e.g. post). If you don't want Awakari to follow you, just find it in a list of your followers and remove.
Specific (non "as is") attribute conversions:
Source Activity Attribute | Destination CloudEvent Attribute | Notes |
---|---|---|
actor.id | source | |
actor.name | subject | e.g. "John Doe" |
published | time | |
content | <text data> |
|
summary | <text data> |
Prepends the existing text data (if any) with a line separator |
type | action | e.g. "Create" |
object.id | objecturl | only if object is link |
object.type | object | e.g. "Note" |
object.attachment.id | attachmenturl | only if attachment is link |
object.attachment.url | attachmenturl | only if attachment is object |
object.attachment.mediaType | attachmenttype | only if attachment is object |
object.content | <text data> |
Prepends the existing text data (if any) with a line separator |
object.inReplyTo | inreplyto | |
object.location | latitude | |
object.location | longitude | |
object.startTime | starts | |
object.summary | <text data> |
Prepends the existing text data (if any) with a line separator |
object.image | imageurl |
Notes:
-
All other attributes (not mentioned in the table above) are been converted as is, e.g. "duration" -> "duration"
-
Activity attribute may be an "object" without an activity type (verb, e.g. "Create"). Then it's also been converted as "object" in addition to the activity fields.
Software | Following | Delivery |
---|---|---|
Mastodon | ✅ OK | ✅ OK |
Lemmy | ❌ status: 400 | ❌ N/A |
Kbin | ✅ OK | ? |
Pixelfed | ✅ OK | ? |
PeerTube | ❌ status: 400, "incorrect activity" | ❌ N/A |
Pleroma | ❌ status 500, "Internal server error" | ❌ N/A |
Misskey | ✅ OK | ? |
BookWyrm | ✅ OK | ? |
Friendica | ✅ OK | ✅ OK |
Hubzilla | ✅ OK | ✅ OK |
Funkwhale | ❌ status 500 | ❌ N/A |
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out private.pem
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
kubectl create secret generic int-activitypub-keys \
--from-file=public=public.pem \
--from-file=private=private.pem
Example request:
grpcurl \
-plaintext \
-proto api/grpc/service.proto \
-d '{ "addr": "[email protected]" }' \
localhost:50051 \
awakari.int.activitypub.Service/Create