Commit Briefs
lemmy: import from its own repo (master)
No need to manage this seperately, it's all related and only brings in a single dep.
apub, cmd/apsend: implement shared inbox delivery
This helps servers hosting many actors, and it helps us when delivering to lots of people on the same server; we only need to make 1 request per server.
apub: handle unmarshalling from quoted-printable mail
MailMate, for example, using quoted-printable encoding when lines are about 80 chars long. Blegh!
apub: use RFC5322-compatible timestamp in Date in header
RFC822 makes Spamassassin unhappy and I learned isn't actually compliant with revisions to the message spec!
apub: handle collection recipients mroe reliably
When we receive activity that has a collection, we see if any of the other actor recipients have the collection set as their followers. Then we can encode it with plus addressing. If we can't do that we drop it. Not ideal, but it covers most use cases. Next up we can encode arbitrary collections like "some/path/to/thing@example.com".
apub: correctly marshal followers collection from an email recipients
The receiving server can forward the message for us. For us to resolve the entire collection is a lot of work, especially since paginated followers collections only contain like 12 entries per page! Lots of people have over 300 followers.
apub: guard against empty pubkey url
A nil key gets handled by rsa.Sign* but we won't catch an empty pubkey url until some server finds an incorrect HTTP signature.
doc: document receiving and reading sections
While here make apget print mail format by default, consistent with rest of system.
cmd/apsend: accept activitypub json input
This lets it send activity which cannot be converted to mail such as Follow
apub: omit empty ID when encoding Activity
This is actually valid according to the spec. This makes embedded Activities like Mentions neater, too.
apub: guard against content we cannot unmarshal activity from
Yet! Decoding shouldn't be too hard. But for now it's a TODO. At least error out so we don't send out crazy messages.
cmd/apserve: write and serve the system docs! (origin/master, tags/v0.1.0)
apub: tighten up content-type on marshalling into mail
Clearer: set a body to read from, then change it when necessary. Fewer instructions! Also, mail clients don't really know what to do with text/markdown, so just use text/plain; that's what Gruber would want. Adds basic test case too