Tiny ActivityPub framework written in Python, both database and server agnostic.
Still in early development, and not published on PyPI yet.
Until a first version is released, the main goal of this framework is to power the microblog.pub microblog engine.
- Database and server agnostic
- You need to implement a backend that respond to activity side-effects
- This also mean you're responsible for serving the activities/collections and receiving them
- ActivityStreams helper classes
- with Outbox/Inbox abstractions
- Content helper using Markdown
- with helpers for parsing hashtags and linkify content
- Key (RSA) helper
- HTTP signature helper
- JSON-LD signature helper
- Webfinger helper
fromlittle_boxesimportactivitypubasapfrommydbimportdb_clientclassMyBackend(ap.Backend): def__init__(self, db_connection): self.db_connection=db_connectiondefinbox_new(self, as_actor: ap.Person, activity: ap.Activity) ->None: # Save activity as "as_actor"# [...]defpost_to_remote_inbox(self, as_actor: ap.Person, payload: ap.ObjectType, recipient: str) ->None: # Send the activity to the remote actor# [...]db_con=db_client() my_backend=MyBackend(db_con) ap.use_backend(my_backend) me=ap.Person({}) # Init an actoroutbox=ap.Outbox(me) follow=ap.Follow(actor=me.id, object='http://iri-i-want-follow') outbox.post(follow)- microblog.pub (using MongoDB as a backend)
- pubgate
TODO: document Mypy, flake8 and black.
PRs are welcome, please open an issue to start a discussion before your start any work.
ISC, see the LICENSE file.