Files
SocialPub/tools/pasture/town/dialects/__init__.py
T
thepraandClaude Opus 5.5 01e5aa4ddd Pasture: Pixelfed and WordPress join
Pixelfed 0.14.4 (FrankenPHP with Horizon and the scheduler, on the shared
Postgres and Redis) and WordPress 6 with ActivityPub 9.3.1 (on a new shared
MySQL, WP-Cron run by a sidecar) are peers now, each with its scenario:
Pixelfed 26 checks (photos both ways with alt text, its place arriving as
Rome with its coordinates, comments, likes, a boost, edits and deletes),
WordPress 17 (an Article with its title, our reply, like and boost kept as
comments of their kinds, its edit and removal). Pixelfed has a town driver
and a pair spec: 145 checks pass, 2 expected (G-0007).

What they showed: Pixelfed names our posts by their page (fixed in
26dac40); on PostgreSQL its migration making caption nullable never runs,
so every remote boost failed (the pasture applies it); it files a DM it
fetches as followers-only (G-0007, upstream); Passport refuses a token
whose user id equals its client's id. WordPress signs with RFC 9421
first, which PrivaPub now verifies (c5a69d2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
2026-10-05 07:01:38 +02:00

35 lines
1.0 KiB
Python

"""The platform registry: name -> driver class and its site."""
from dialects.akkoma import Akkoma
from dialects.gts import Gts
from dialects.hollo import Hollo
from dialects.iceshrimp import Iceshrimp
from dialects.lemmy_api import LemmyApi
from dialects.mastodon import Mastodon
from dialects.misskey_api import Misskey, Sharkey
from dialects.pixelfed import Pixelfed
from dialects.pleroma import Pleroma
from dialects.privapub import PrivaPub
DRIVERS = {
"privapub": (PrivaPub, "privapub.test"),
"gts": (Gts, "gts.test"),
"mastodon": (Mastodon, "mastodon.test"),
"misskey": (Misskey, "misskey.test"),
"sharkey": (Sharkey, "sharkey.test"),
"akkoma": (Akkoma, "akkoma.test"),
"lemmy": (LemmyApi, "lemmy.test"),
"hollo": (Hollo, "hollo.test"),
"iceshrimp": (Iceshrimp, "iceshrimp.test"),
"pleroma": (Pleroma, "pleroma.test"),
"pixelfed": (Pixelfed, "pixelfed.test"),
}
_made = {}
def driver(platform):
if platform not in _made:
cls, host = DRIVERS[platform]
_made[platform] = cls(host)
return _made[platform]