From e59b3c2d82aa2376b15449be2fcaa1badde29f3f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 17 Oct 2021 16:12:15 +0100 Subject: [PATCH 1/4] Return located post --- daemon.py | 15 ++++++++------- posts.py | 10 +++++----- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/daemon.py b/daemon.py index ff0fe5e54..1c3bc6ab5 100644 --- a/daemon.py +++ b/daemon.py @@ -7389,9 +7389,10 @@ class PubServer(BaseHTTPRequestHandler): print('Locating liked post ' + likeUrl) # directly like the post file - likedPostJson = None - likedPostFilename = \ - locatePost(baseDir, self.postToNickname, domain, likeUrl) + likedPostJson = origFilename + if not likedPostJson: + likedPostFilename = \ + locatePost(baseDir, self.postToNickname, domain, likeUrl) if likedPostFilename: recentPostsCache = self.server.recentPostsCache likedPostJson = loadJson(likedPostFilename, 0, 1) @@ -7557,10 +7558,10 @@ class PubServer(BaseHTTPRequestHandler): self._postToOutbox(undoLikeJson, self.server.projectVersion, None) # directly undo the like within the post file - likedPostJson = None - likedPostFilename = locatePost(baseDir, - self.postToNickname, - domain, likeUrl) + likedPostJson = origFilename + if not likedPostJson: + likedPostFilename = locatePost(baseDir, self.postToNickname, + domain, likeUrl) if likedPostFilename: recentPostsCache = self.server.recentPostsCache likedPostJson = loadJson(likedPostFilename, 0, 1) diff --git a/posts.py b/posts.py index fb706643f..b23281bc0 100644 --- a/posts.py +++ b/posts.py @@ -5053,15 +5053,15 @@ def getOriginalPostFromAnnounceUrl(announceUrl: str, baseDir: str, return None, None, None announcePostJson = loadJson(postFilename, 0, 1) if not announcePostJson: - return None, None, None + return None, None, postFilename if not announcePostJson.get('type'): - return None, None, None + return None, None, postFilename if announcePostJson['type'] != 'Announce': - return None, None, None + return None, None, postFilename if not announcePostJson.get('object'): - return None, None, None + return None, None, postFilename if not isinstance(announcePostJson['object'], str): - return None, None, None + return None, None, postFilename actor = url = None # do we have the original post? origPostId = announcePostJson['object'] From aa11bb566fd0157c01f19580b958330c20f3aee6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 17 Oct 2021 16:57:16 +0100 Subject: [PATCH 2/4] Locating announced post --- daemon.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index 1c3bc6ab5..a47f91832 100644 --- a/daemon.py +++ b/daemon.py @@ -7372,9 +7372,11 @@ class PubServer(BaseHTTPRequestHandler): getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl + likedPostJson = origFilename if origActor and origPostUrl: actorLiked = origActor likeUrl2 = origPostUrl + likedPostJson = None likeJson = { "@context": "https://www.w3.org/ns/activitystreams", @@ -7389,7 +7391,6 @@ class PubServer(BaseHTTPRequestHandler): print('Locating liked post ' + likeUrl) # directly like the post file - likedPostJson = origFilename if not likedPostJson: likedPostFilename = \ locatePost(baseDir, self.postToNickname, domain, likeUrl) @@ -7537,9 +7538,11 @@ class PubServer(BaseHTTPRequestHandler): getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl + likedPostJson = origFilename if origActor and origPostUrl: actorLiked = origActor likeUrl2 = origPostUrl + likedPostJson = None undoLikeJson = { "@context": "https://www.w3.org/ns/activitystreams", @@ -7558,7 +7561,6 @@ class PubServer(BaseHTTPRequestHandler): self._postToOutbox(undoLikeJson, self.server.projectVersion, None) # directly undo the like within the post file - likedPostJson = origFilename if not likedPostJson: likedPostFilename = locatePost(baseDir, self.postToNickname, domain, likeUrl) From 7ee48e6d20732e178971fa7198d766fbf850e17c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 17 Oct 2021 17:11:38 +0100 Subject: [PATCH 3/4] Use like json if available when updating collections --- daemon.py | 9 +++++---- inbox.py | 9 +++++---- like.py | 12 +++++++----- utils.py | 6 ++++-- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/daemon.py b/daemon.py index a47f91832..884fbfc22 100644 --- a/daemon.py +++ b/daemon.py @@ -7401,7 +7401,7 @@ class PubServer(BaseHTTPRequestHandler): updateLikesCollection(recentPostsCache, baseDir, likedPostFilename, likeUrl, likeActor, self.postToNickname, - domain, debug) + domain, debug, likedPostJson) likeUrl = origPostUrl likedPostFilename = origFilename if debug: @@ -7409,7 +7409,7 @@ class PubServer(BaseHTTPRequestHandler): updateLikesCollection(recentPostsCache, baseDir, likedPostFilename, likeUrl, likeActor, self.postToNickname, domain, - debug) + debug, None) if debug: print('Regenerating html post for changed likes collection') # clear the icon from the cache so that it gets updated @@ -7570,7 +7570,8 @@ class PubServer(BaseHTTPRequestHandler): if origFilename and origPostUrl: undoLikesCollectionEntry(recentPostsCache, baseDir, likedPostFilename, - likeUrl, undoActor, domain, debug) + likeUrl, undoActor, domain, debug, + likedPostJson) likeUrl = origPostUrl likedPostFilename = origFilename if debug: @@ -7578,7 +7579,7 @@ class PubServer(BaseHTTPRequestHandler): undoLikesCollectionEntry(recentPostsCache, baseDir, likedPostFilename, likeUrl, - undoActor, domain, debug) + undoActor, domain, debug, None) if debug: print('Regenerating html post for changed likes collection') if likedPostJson: diff --git a/inbox.py b/inbox.py index 90695248b..3902c4967 100644 --- a/inbox.py +++ b/inbox.py @@ -940,7 +940,7 @@ def _receiveLike(recentPostsCache: {}, likeActor, postLikedId) updateLikesCollection(recentPostsCache, baseDir, postFilename, postLikedId, likeActor, - handleName, domain, debug) + handleName, domain, debug, None) # regenerate the html likedPostJson = loadJson(postFilename, 0, 1) if likedPostJson: @@ -961,7 +961,7 @@ def _receiveLike(recentPostsCache: {}, postLikedId, likeActor, handleName, - domain, debug) + domain, debug, None) if likedPostJson: if debug: cachedPostFilename = \ @@ -1052,7 +1052,7 @@ def _receiveUndoLike(recentPostsCache: {}, likeActor = messageJson['actor'] postLikedId = messageJson['object'] undoLikesCollectionEntry(recentPostsCache, baseDir, postFilename, - postLikedId, likeActor, domain, debug) + postLikedId, likeActor, domain, debug, None) # regenerate the html likedPostJson = loadJson(postFilename, 0, 1) if likedPostJson: @@ -1069,7 +1069,8 @@ def _receiveUndoLike(recentPostsCache: {}, postFilename = announceLikedFilename undoLikesCollectionEntry(recentPostsCache, baseDir, postFilename, postLikedId, - likeActor, domain, debug) + likeActor, domain, debug, + None) if likedPostJson: if debug: cachedPostFilename = \ diff --git a/like.py b/like.py index 848890998..a83af9aba 100644 --- a/like.py +++ b/like.py @@ -129,7 +129,7 @@ def _like(recentPostsCache: {}, updateLikesCollection(recentPostsCache, baseDir, postFilename, objectUrl, newLikeJson['actor'], - nickname, domain, debug) + nickname, domain, debug, None) sendSignedJson(newLikeJson, session, baseDir, nickname, domain, port, @@ -368,7 +368,7 @@ def outboxLike(recentPostsCache: {}, updateLikesCollection(recentPostsCache, baseDir, postFilename, messageId, messageJson['actor'], - nickname, domain, debug) + nickname, domain, debug, None) if debug: print('DEBUG: post liked via c2s - ' + postFilename) @@ -404,7 +404,7 @@ def outboxUndoLike(recentPostsCache: {}, return True undoLikesCollectionEntry(recentPostsCache, baseDir, postFilename, messageId, messageJson['actor'], - domain, debug) + domain, debug, None) if debug: print('DEBUG: post undo liked via c2s - ' + postFilename) @@ -412,10 +412,12 @@ def outboxUndoLike(recentPostsCache: {}, def updateLikesCollection(recentPostsCache: {}, baseDir: str, postFilename: str, objectUrl: str, actor: str, - nickname: str, domain: str, debug: bool) -> None: + nickname: str, domain: str, debug: bool, + postJsonObject: {}) -> None: """Updates the likes collection within a post """ - postJsonObject = loadJson(postFilename) + if not postJsonObject: + postJsonObject = loadJson(postFilename) if not postJsonObject: return diff --git a/utils.py b/utils.py index 50007b2dd..47572bfb0 100644 --- a/utils.py +++ b/utils.py @@ -2161,10 +2161,12 @@ def getFileCaseInsensitive(path: str) -> str: def undoLikesCollectionEntry(recentPostsCache: {}, baseDir: str, postFilename: str, objectUrl: str, - actor: str, domain: str, debug: bool) -> None: + actor: str, domain: str, debug: bool, + postJsonObject: {}) -> None: """Undoes a like for a particular actor """ - postJsonObject = loadJson(postFilename) + if not postJsonObject: + postJsonObject = loadJson(postFilename) if not postJsonObject: return # remove any cached version of this post so that the From 3edc55341b605ec2a0fe1bce0eeae7cc971ccd9e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 17 Oct 2021 17:49:34 +0100 Subject: [PATCH 4/4] Filename not json --- daemon.py | 12 ++++++------ posts.py | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/daemon.py b/daemon.py index 884fbfc22..d03ff3c3b 100644 --- a/daemon.py +++ b/daemon.py @@ -7372,11 +7372,11 @@ class PubServer(BaseHTTPRequestHandler): getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl - likedPostJson = origFilename + likedPostFilename = origFilename if origActor and origPostUrl: actorLiked = origActor likeUrl2 = origPostUrl - likedPostJson = None + likedPostFilename = None likeJson = { "@context": "https://www.w3.org/ns/activitystreams", @@ -7391,7 +7391,7 @@ class PubServer(BaseHTTPRequestHandler): print('Locating liked post ' + likeUrl) # directly like the post file - if not likedPostJson: + if not likedPostFilename: likedPostFilename = \ locatePost(baseDir, self.postToNickname, domain, likeUrl) if likedPostFilename: @@ -7538,11 +7538,11 @@ class PubServer(BaseHTTPRequestHandler): getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl - likedPostJson = origFilename + likedPostFilename = origFilename if origActor and origPostUrl: actorLiked = origActor likeUrl2 = origPostUrl - likedPostJson = None + likedPostFilename = None undoLikeJson = { "@context": "https://www.w3.org/ns/activitystreams", @@ -7561,7 +7561,7 @@ class PubServer(BaseHTTPRequestHandler): self._postToOutbox(undoLikeJson, self.server.projectVersion, None) # directly undo the like within the post file - if not likedPostJson: + if not likedPostFilename: likedPostFilename = locatePost(baseDir, self.postToNickname, domain, likeUrl) if likedPostFilename: diff --git a/posts.py b/posts.py index b23281bc0..9011d7d48 100644 --- a/posts.py +++ b/posts.py @@ -5089,4 +5089,5 @@ def getOriginalPostFromAnnounceUrl(announceUrl: str, baseDir: str, origPostId.split('/' + origNick + '/')[0] + \ '/' + origNick url = origPostId + return actor, url, origFilename