diff --git a/src/collections.py b/src/collections.py index f5e1476ef..a37862322 100644 --- a/src/collections.py +++ b/src/collections.py @@ -283,13 +283,18 @@ def get_featured_collections_feed(base_dir: str, def store_feature_authorization(base_dir: str, nickname: str, domain: str, featured_item: {}) -> bool: - """Stores a feature authorization + """Stores a feature authorization after receiving a request for a + particular actor or hashtag """ + if not featured_item.get('featureAuthorization'): + return False + if not isinstance(featured_item['featureAuthorization'], str): + return False accounts_dir: str = acct_dir(base_dir, nickname, domain) if not is_a_dir(accounts_dir + '/stamps'): makedir(accounts_dir + '/stamps') - stamp_id = featured_item['featureAuthorization'].split('/')[1] - feature_authorization_filename = accounts_dir + '/' + stamp_id + stamp_id = url_text_to_number(featured_item['featureAuthorization']) + feature_authorization_filename = accounts_dir + '/stamps/' + stamp_id if not is_a_file(feature_authorization_filename): return False return save_json(featured_item, feature_authorization_filename) diff --git a/src/utils.py b/src/utils.py index 2e896c9ce..9b57c7734 100644 --- a/src/utils.py +++ b/src/utils.py @@ -17,6 +17,7 @@ import datetime import json import locale import idna +import base64 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from src.followingCalendar import add_person_to_calendar @@ -58,8 +59,6 @@ INVALID_ACTOR_URL_CHARACTERS = ( ';', '=' ) -URL_TEXT_MAGIC_NUMBER = 7439 - def is_account_dir(dir_name: str) -> bool: """Is the given directory an account within /accounts ? @@ -4381,14 +4380,5 @@ def get_preferred_username(actor: {}, system_language: str) -> str: def url_text_to_number(url: str) -> str: """converts url text or collection name to a number string used as an id """ - result = '' - for char in url: - num = ord(char) - if num > 99: - continue - if num > 9: - result = str(num) + result - else: - result = '0' + str(num) + result - num = (URL_TEXT_MAGIC_NUMBER + int(result)) % 9999999999999999999999999999 - return str(num) + hash_result = get_sha_256(url) + return base64.b64encode(hash_result).decode('utf-8')