diff options
| author | 2019-09-12 21:58:26 +0100 | |
|---|---|---|
| committer | 2019-09-12 21:58:26 +0100 | |
| commit | 91949257394482c2a22b7a17f5827bd7e9c818a7 (patch) | |
| tree | 5b9092131e2dbee70f43be4a7207d2eb3c341260 /modules | |
| parent | 'resetkarme' -> 'resetkarma' (diff) | |
| signature | ||
set a bitbot-specific useragent for fediverse requests
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/fediverse.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/modules/fediverse.py b/modules/fediverse.py index 3d394542..bb464de0 100644 --- a/modules/fediverse.py +++ b/modules/fediverse.py @@ -1,5 +1,5 @@ import urllib.parse -from src import ModuleManager, utils +from src import IRCBot, ModuleManager, utils HOSTMETA = "https://%s/.well-known/host-meta" WEBFINGER_DEFAULT = "https://%s/.well-known/webfinger?resource={uri}" @@ -9,6 +9,8 @@ ACTIVITY_TYPE = "application/activity+json" ACTIVITY_HEADERS = {"Accept": ("application/ld+json; " 'profile="https://www.w3.org/ns/activitystreams"')} +USERAGENT = "BitBot (%s) Fediverse" % IRCBot.VERSION + def _parse_username(s): username, _, instance = s.rpartition("@") if username.startswith("@"): @@ -54,7 +56,7 @@ class Module(ModuleManager.BaseModule): raise utils.EventError("Please provide @<user>@<instance>") hostmeta = utils.http.request(HOSTMETA % instance, - parse=True, check_content_type=False) + parse=True, check_content_type=False, useragent=USERAGENT) webfinger_url = None for item in hostmeta.data.find_all("link"): if item["rel"] and item["rel"][0] == "lrdd": @@ -68,7 +70,7 @@ class Module(ModuleManager.BaseModule): "acct:%s@%s" % (username, instance)) webfinger = utils.http.request(webfinger_url, - headers=WEBFINGER_HEADERS, json=True) + headers=WEBFINGER_HEADERS, json=True, useragent=USERAGENT) activity_url = None for link in webfinger.data["links"]: @@ -80,12 +82,12 @@ class Module(ModuleManager.BaseModule): raise utils.EventError("Failed to find user activity feed") activity = utils.http.request(activity_url, - headers=ACTIVITY_HEADERS, json=True) + headers=ACTIVITY_HEADERS, json=True, useragent=USERAGENT) preferred_username = activity.data["preferredUsername"] outbox_url = activity.data["outbox"] outbox = utils.http.request(outbox_url, headers=ACTIVITY_HEADERS, - json=True) + json=True, useragent=USERAGENT) items = None if "first" in outbox.data: @@ -95,7 +97,7 @@ class Module(ModuleManager.BaseModule): else: # mastodon first = utils.http.request(outbox.data["first"], - headers=ACTIVITY_HEADERS, json=True) + headers=ACTIVITY_HEADERS, json=True, useragent=USERAGENT) items = first.data["orderedItems"] else: items = outbox.data["orderedItems"] @@ -108,11 +110,11 @@ class Module(ModuleManager.BaseModule): retoot_url = first_item["object"] retoot_instance = urllib.parse.urlparse(retoot_url).hostname retoot = utils.http.request(retoot_url, - headers=ACTIVITY_HEADERS, json=True) + headers=ACTIVITY_HEADERS, json=True, useragent=USERAGENT) original_tooter_url = retoot.data["attributedTo"] original_tooter = utils.http.request(original_tooter_url, - headers=ACTIVITY_HEADERS, json=True) + headers=ACTIVITY_HEADERS, json=True, useragent=USERAGENT) retooted_user = "@%s@%s" % ( original_tooter.data["preferredUsername"], |
