diff --git a/overseer/apis/v1/__init__.py b/overseer/apis/v1/__init__.py index 9c3e348..00bb60e 100644 --- a/overseer/apis/v1/__init__.py +++ b/overseer/apis/v1/__init__.py @@ -2,9 +2,12 @@ import overseer.apis.v1.base as base import overseer.apis.v1.whitelist as whitelist import overseer.apis.v1.endorsements as endorsements import overseer.apis.v1.guarantees as guarantees +import overseer.apis.v1.activitypub as activitypub from overseer.apis.v1.base import api api.add_resource(base.Suspicions, "/instances") +api.add_resource(activitypub.User, "/user/") +api.add_resource(activitypub.Inbox, "/inbox/") api.add_resource(whitelist.Whitelist, "/whitelist") api.add_resource(whitelist.WhitelistDomain, "/whitelist/") api.add_resource(endorsements.Endorsements, "/endorsements/") diff --git a/overseer/apis/v1/activitypub.py b/overseer/apis/v1/activitypub.py new file mode 100644 index 0000000..4508e7c --- /dev/null +++ b/overseer/apis/v1/activitypub.py @@ -0,0 +1,47 @@ +from overseer.apis.v1.base import * +from overseer.utils import get_nodeinfo + +class User(Resource): + get_parser = reqparse.RequestParser() + + @api.expect(get_parser) + @cache.cached(timeout=10) + def get(self, username): + '''User details + ''' + self.args = self.get_parser.parse_args() + if username != "overseer": + raise e.NotFound("User does not exist") + with open('public.pem', 'r') as file: + pubkey = file.read() + overseer = { + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1" + ], + + "id": "https://overseer.dbzer0.com/api/v1/user/overseer", + "type": "Person", + "preferredUsername": "overseer", + "inbox": "https://overseer.dbzer0.com/api/v1/inbox/overseer", + + "publicKey": { + "id": "https://overseer.dbzer0.com/api/v1/user/overseer#main-key", + "owner": "https://overseer.dbzer0.com/api/v1/user/overseer", + "publicKeyPem": pubkey + } + } + return overseer,200 + +class Inbox(Resource): + post_parser = reqparse.RequestParser() + + @api.expect(post_parser) + def post(self, username): + '''User Inbox + ''' + if username != "overseer": + raise e.NotFound("User does not exist") + self.args = self.post_parser.parse_args() + print("inbox hit") + return {"message": "delivered"}, 200 diff --git a/overseer/routes.py b/overseer/routes.py index 6dd8757..8a59d12 100644 --- a/overseer/routes.py +++ b/overseer/routes.py @@ -47,7 +47,7 @@ def wellknown_redirect(): { "rel": "self", "type": "application/activity+json", - "href": "https://overseer.dbzer0.com/actor" + "href": "https://overseer.dbzer0.com/api/v1/user/overseer" } ] }