lb

little-boxes

Tiny ActivityPub framework written in Python, both database and server agnostic.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

73

Maintenance

Last Commit

2yrs ago

Contributors

7

Package

Dependencies

0

License

ISC

Categories

Readme

Little Boxes

Build Status License Code style: black

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.

Features

  • 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

Getting Started

from little_boxes import activitypub as ap

from mydb import db_client


class MyBackend(ap.Backend):

    def __init__(self, db_connection):
        self.db_connection = db_connection    

    def inbox_new(self, as_actor: ap.Person, activity: ap.Activity) -> None:
        # Save activity as "as_actor"
        # [...]

    def post_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 actor
outbox = ap.Outbox(me)

follow = ap.Follow(actor=me.id, object='http://iri-i-want-follow')
outbox.post(follow)

Projects using Little Boxes

Contributions

TODO: document Mypy, flake8 and black.

PRs are welcome, please open an issue to start a discussion before your start any work.

License

ISC, see the LICENSE file.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial