Überblick
Die FacadeBluesky ist ein dünner Wrapper um BlueskyManager. BlueskyManager verwaltet mehrere Agents, und der Trait HasShortHand bündelt Shortcuts für die am häufigsten verwendeten Methoden.
Architektur
DerBlueskyServiceProvider registriert Factory::class als BlueskyManager als Scoped Singleton (eine Instanz pro Request).
getFacadeAccessor() der Facade löst dieses Binding auf.
Kernmethoden des BlueskyManager
Die vomBlueskyManager selbst definierten Kernmethoden sind die folgenden. Es hilft beim Verständnis der internen Struktur, sie klar von den Methoden des Traits HasShortHand abzugrenzen.
Authentifizierung
Agent-Operationen
HTTP-Client
Utilities
Trait HasShortHand
Der TraitHasShortHand verpackt Low-Level-APIs des AT Protocols in verständliche, PHP-freundliche Methoden. Es genügt, im BlueskyManager use HasShortHand; einzufügen, dann sind diese Methoden direkt über Bluesky:: aufrufbar.
Der Grund,
HasShortHand als eigenständigen Trait zu führen, liegt in der einfachen Testbarkeit und Anpassbarkeit. So bleibt der Code des BlueskyManager schlank, während zahlreiche API-Shortcuts angeboten werden.Posts und Feed
Engagement
Folgen
Profil und Account
Medien
Benachrichtigungen
AT-Protocol-Record-Operationen
Feed-Generator und Labeler
Beispiele für häufig verwendete Shortcuts
Post erstellen
Antworten
Für eine Antwort setzen Sie inPost::build() den StrongRef des übergeordneten Posts. HasShortHand besitzt keine spezielle reply()-Methode – übergeben Sie post() stattdessen ein Post-Objekt.
Likes und Reposts
Profil aktualisieren
upsertProfile() lädt das aktuelle Profil und speichert die in der Closure vorgenommenen Änderungen. Über die Methoden des Profile-Objekts lassen sich unter anderem displayName und description setzen.
Self-Labels setzen
MitSelfLabels können Sie Self-Labels für den gesamten Account setzen.
Beliebige API direkt aufrufen
Für Methoden, die nicht inHasShortHand enthalten sind, verwenden Sie send() oder client().
Unterschied zwischen Nutzung über die Facade und direkter Nutzung
Bluesky::post() und app(Factory::class)->post() sind Operationen auf derselben BlueskyManager-Instanz.
scoped-Registrierung bleibt der nach login() bestehende Session-Zustand innerhalb eines Requests erhalten.
Conditionable und Macroable
BlueskyManager verwendet zusätzlich die Traits Conditionable und Macroable.
Conditionable: when() / unless()
Macroable: Eigene Methoden hinzufügen
Mitmacro() können Sie aus der Anwendung Methoden zum BlueskyManager hinzufügen. Üblicherweise definiert man sie in der boot()-Methode des AppServiceProvider.
Eigenen Agent einsetzen
ÜberwithAgent() können Sie eine beliebige Agent-Implementierung direkt einsetzen.
Da bei der üblichen Authentifizierung (
login() / withToken()) der Agent automatisch gesetzt wird, ist withAgent() vor allem beim Testen relevant.Weiterführende Links
- Vergleich der Authentifizierungsmethoden – Details zu App Password und OAuth
- Basic client – API-Beispiele nach der Authentifizierung
- Tests – Testmethoden mit Fake
- Source: src/BlueskyManager.php
- Source: src/HasShortHand.php