コミットグラフ

59 コミット

作成者 SHA1 メッセージ 日付
Cory Slep 806c037e3b Add note to self to check Follow edge case 2018-09-01 20:03:40 +02:00
Cory Slep 83277d57c9 Announce activities now add to shares collections on objects. 2018-08-21 20:49:24 +02:00
Cory Slep 1c057922ca Fix intransitive activity generated code in vocab.
The sub-types of Intransitive Activity (Arrive, etc) would not satisfy
the vocab.IntransitiveActivityType interface, due to not accounting for
the parent WithoutProperties definition.

This fixes that code generation, so that all Activity subtypes will be
able to be properly converted to vocab.ActivityType or
vocab.IntransitiveActivityType.

Updated the PostOutbox code path to properly handle this distinction
when receiving a C2S IntransitiveActivity.
2018-08-20 23:08:02 +02:00
Cory Slep 797b2f79a8 Support other activity types 2018-08-20 00:35:31 +02:00
Cory Slep f8b24eef88 Use OrderedCollection by default for collections.
The 'liked', 'likes', 'followers', and 'following' collections now
default to the 'OrderedCollection' type instead of throwing an error if
the client application does not supply an IRI, 'Collection', or
'OrderedCollection' type on the actor or object.
2018-08-04 13:53:33 +02:00
Cory Slep f82653f709 Don't do an Activity's side effects more than once
If a federated Activity has been seen before, skip handling its side
effects.
2018-08-03 22:30:53 +02:00
Cory Slep 8fa0f2395c Add Like activities to the likes collection.
Previously, it was incorrectly adding the actors to the likes collection.
2018-08-02 22:29:03 +02:00
Cory Slep fb16747c4e Migrate Typer and type-detection functions to vocab
This helps ensure that the code to detect specific ActivityStream types
continues to live in the code-generation algorithms, reducing
maintenance burdens.
2018-06-12 23:29:30 +02:00
Cory Slep 45f05d97c4 PostInbox Add now adds IRIs.
As part of normalization.
2018-06-06 22:59:24 +02:00
Cory Slep 3d310d5e81 PostInbox auto Follow/Reject uses IRI only
Part of normalization of IRIs.
2018-06-06 22:53:18 +02:00
Cory Slep 7f3a6fce6b PostOutbox Add uses IRIs
Normalizes to prevent overly-embedding objects.
2018-06-06 22:49:06 +02:00
Cory Slep a1fc177bc7 PostOutbox Create actor & attributedTo uses IRIs
Part of normalizing IRIs and preventing overly embedding objects.
2018-06-06 22:45:36 +02:00
Cory Slep 945c79483a Use IRIs when normalizing recipients.
Part of the IRI auditing for normalization effort.
2018-06-06 22:20:52 +02:00
Cory Slep 2bc987e776 Wrapping in Create for delivery propagates IRIs only.
As part of auditing everywhere an object may become inadvertently
embedded, and prefer normalization of IRIs.
2018-06-06 21:44:10 +02:00
Cory Slep 33c5320c8f Fixes for the first c2s implementation report.
Non Interface Behavior Changes:

- Robust header detection for ActivityPub requests
- No more panic because of a Bto access after a Bcc condition
- PostOutbox Undo activities now required to have matching actors

Interface Behavior Changes:

- PostOutbox activities themselves are now passed to App.Set
- Authentication/Authorization in a SocialAPIVerifier no longer
    shadowed and ignored.
- Add activities can now fetch remote objects (not permanent)

The behavior changes are justified as having been broken bugs that would
have not met a developer's expectations. So including them as part of
the next release maintains major version 0 behavior compatibility.
2018-06-06 00:49:02 +02:00
Cory Slep 0fc1556d17 Fix comments and HandlerFunc 2018-05-30 23:37:59 +02:00
Cory Slep 6c1de66753 Move CanAdd & CanRemove into Application interface 2018-05-30 21:27:07 +02:00
Cory Slep ba40dc50b4 Use *url.URL instead of url.URL.
He who fights with monsters should be careful lest he thereby become a monster.
And if thou gaze long into an abyss, the abyss will also gaze into thee.
2018-05-29 21:57:39 +02:00
Cory Slep b8a27ed6f7 The App interfaces contain only the needed funcs
This will hopefully clarify what interfaces are needed for which kind of
implementations of ActivityPub are needed.
2018-05-29 00:04:24 +02:00
Cory Slep abda28d2dc Remove make publicly visible errors private.
We can instead directly write HTTP status codes in these special cases,
removing the burden on library users.
2018-05-27 23:11:19 +02:00
Cory Slep 96c9afee84 Add Read and ReadWrite when getting data.
This allows implementations to prevent race conditions between
contentious objects.
2018-05-27 22:57:43 +02:00
Cory Slep 353cd20402 Prepend to ordered collections. 2018-05-27 22:16:59 +02:00
Cory Slep bed3dbef16 Change vocab Add methods to Append and Prepend
This allows the reverse chronological order to be set as items are
easily prepended to non-functional activity stream properties.
2018-05-27 17:07:40 +02:00
Cory Slep de215c8787 Add and fix tests for PostOutbox verification.
PostOutbox and the SocialAPI can now use either HTTP Signatures or a
custom authentication scheme, such as OAuth2.

Tests for the handler authentication and authorization need to be
written still.
2018-05-26 14:37:06 +02:00
Cory Slep 2986f7601b Add function to serve ActivityPub object.
This also incorporates some interface changes to permit both HTTP
Signatures and other forms of authentication and authorization when
accessing data. This means support for something like OAuth2 should be
doable in conjunction with HTTP Signatures.

Tests are broken; this commit should not be used as a build point.
2018-05-25 00:23:50 +02:00
Cory Slep f46242ac83 Replace PostOutboxAuthorized with HTTP Signatures.
This makes the implementation conformant to §6 of the specification that
requires HTTP requests to be signed with the user's credentials.
2018-05-20 13:53:12 +02:00
Cory Slep ecc87da47f Add HTTP Signatures support for user credentials.
Tests are broken in this commit.
2018-05-18 23:31:18 +02:00
Cory Slep 5390174107 Add same-origin and same-actor checks.
These covers server-to-server Update and Delete activities as well as server-to-
server Undo activities, respectively.
2018-05-13 17:18:39 +02:00
Cory Slep f60bb145cf Deduplicate adding to like/following collections.
We simply prevent adding a duplicate likes, liked, following, or
follower based on the IRI of the element being added to the collection.

Adds corresponding black box tests.

Note that this deduplication does not cover the inbox.
2018-05-13 13:05:12 +02:00
Cory Slep 4bad90902e Add extra integration tests.
These generally include improving the handling of OrderedCollections and
IRIs. Note that improvement to setting IRI'd fetches from the
implementing application were made.

Improve the handing of AutoAccept and AutoReject follows. If there are
no owned objects in the Activity, we prevent sending the automatic reply
in case the implemented application is not checking for ownership of the
object of the original Follow activity.
2018-05-12 23:03:20 +02:00
Cory Slep 9fbd18b53c PostOutbox Follow tests 2018-05-10 17:25:48 +02:00
Cory Slep 7b63dca953 Support Inbox Forwarding.
Client libraries can also filter the collections being targeted for the
inbox forwarding.
2018-05-10 12:49:37 +02:00
Cory Slep c5dd064b06 PostInbox adds to actor's Inbox OrderedCollection.
Tests were upated and refactored to use common initialization similar to
how PostOutbox has common intialization.
2018-04-29 15:56:38 +02:00
Cory Slep e3a72c5274 Apply nulls in JSON in PostOutbox Update
This is a much better solution than trying to do some sort of roll-your-
own JSON parser.
2018-04-28 13:47:33 +02:00
Cory Slep 07c0392ada Clean up some TODOs. 2018-04-25 00:43:41 +02:00
Cory Slep 2adcc56581 Add PostOutbox Create unit tests.
Fix normalizing the recipents between the object and the activity. Also
allow the handlers to adjust what gets placed in the outbox, since the
client-to-server API allows the server to modify the object before being
delivered.
2018-04-22 14:02:45 +02:00
Cory Slep 19ca5b0975 Add PostOutbox non-callback tests.
Also move some functions out of the generic Application interface into
the specialized SocialApp interface. They will be moved back into the
Application interface if further development needs it when implementing
inbox forwarding, for example.
2018-04-19 20:58:00 +02:00
Cory Slep c5830e6eff Add PostInbox Like and Undo unit tests 2018-04-14 09:54:30 +02:00
Cory Slep a06ee678e8 Add PostInbox Remove unit tests 2018-04-14 09:36:24 +02:00
Cory Slep 4050d971c4 Add PostInbox Add unit tests. 2018-04-13 22:08:39 +02:00
Cory Slep 7d049ea3d4 Add tests for PostInbox Object/Target requirements
Also fixed my earlier stupidity at requiring a 'type' when I meant to
require a 'target'. Also added the missing checks to the federated
handlers.
2018-04-12 21:55:20 +02:00
Cory Slep a944e2493a Fix pub build. Implement Follow AutoAccept test.
Also refactored the likes/liked add-to-collections logic so that they
are also applicable for following and followers collections. This code
is still as ugly as sin.
2018-04-11 00:10:29 +02:00
Cory Slep 9f42e8c52c Testing for @context and Follow DoNothing/Reject.
Testing the Follow AutoAccept feature requires implementing it similar
to how the likes collections are implemented.
2018-04-08 19:17:08 +02:00
Cory Slep c6c350e4d0 Move the DelivererPool out of ActivityPub.
This simplifies testing and allows other implementations to supply a
basic version instead.
2018-04-04 20:36:23 +02:00
Cory Slep 701475b6e0 Fix bugs with delivering messages.
This was uncovered during writing tests where both the Social and
Federative APIs are enabled. The actorObject interface was overused
partially due to my earlier confusion; the introduction of the internal
actor interface resolved this.

Finally, the HttpClient interface was introduced to be able to mock out
calls in testing. It may also prove useful for future applications using
this library.
2018-04-04 00:23:55 +02:00
Cory Slep aede45d546 Don't try to own 'object' for Add/Remove Activities 2018-03-31 23:24:10 +02:00
Cory Slep 6e343f9f45 Support federative Add and Remove 2018-03-30 19:39:07 +02:00
Cory Slep 4efb0a41b2 Add public creation functions 2018-02-21 23:16:10 +01:00
Cory Slep 4368380651 Implement Accept in response to a Follow 2018-02-20 22:50:13 +01:00
Cory Slep 07a04262d9 Support likes, liked, blocking, auto-accept/reject follows. 2018-02-20 00:09:29 +01:00