Bookmarks interaction with posts cache

main
Bob Mottram 2019-11-24 21:50:18 +00:00
parent 7b8925ce08
commit 1da6bea818
4 changed files with 43 additions and 20 deletions

View File

@ -10,6 +10,7 @@ import os
import json import json
import time import time
from pprint import pprint from pprint import pprint
from utils import removePostFromCache
from utils import urlPermitted from utils import urlPermitted
from utils import getNicknameFromActor from utils import getNicknameFromActor
from utils import getDomainFromActor from utils import getDomainFromActor
@ -23,7 +24,8 @@ from webfinger import webfingerHandle
from auth import createBasicAuthHeader from auth import createBasicAuthHeader
from posts import getPersonBox from posts import getPersonBox
def undoBookmarksCollectionEntry(baseDir: str,postFilename: str,objectUrl: str, \ def undoBookmarksCollectionEntry(recentPostsCache: {}, \
baseDir: str,postFilename: str,objectUrl: str, \
actor: str,domain: str,debug: bool) -> None: actor: str,domain: str,debug: bool) -> None:
"""Undoes a bookmark for a particular actor """Undoes a bookmark for a particular actor
""" """
@ -37,6 +39,7 @@ def undoBookmarksCollectionEntry(baseDir: str,postFilename: str,objectUrl: str,
getCachedPostFilename(baseDir,nickname,domain,postJsonObject) getCachedPostFilename(baseDir,nickname,domain,postJsonObject)
if os.path.isfile(cachedPostFilename): if os.path.isfile(cachedPostFilename):
os.remove(cachedPostFilename) os.remove(cachedPostFilename)
removePostFromCache(postJsonObject,recentPostsCache)
if not postJsonObject.get('type'): if not postJsonObject.get('type'):
return return
@ -128,7 +131,8 @@ def noOfBookmarks(postJsonObject: {}) -> int:
postJsonObject['object']['bookmarks']['totalItems']=0 postJsonObject['object']['bookmarks']['totalItems']=0
return len(postJsonObject['object']['bookmarks']['items']) return len(postJsonObject['object']['bookmarks']['items'])
def updateBookmarksCollection(baseDir: str,postFilename: str, \ def updateBookmarksCollection(recentPostsCache: {}, \
baseDir: str,postFilename: str, \
objectUrl: str, \ objectUrl: str, \
actor: str,domain: str,debug: bool) -> None: actor: str,domain: str,debug: bool) -> None:
"""Updates the bookmarks collection within a post """Updates the bookmarks collection within a post
@ -141,6 +145,7 @@ def updateBookmarksCollection(baseDir: str,postFilename: str, \
getCachedPostFilename(baseDir,nickname,domain,postJsonObject) getCachedPostFilename(baseDir,nickname,domain,postJsonObject)
if os.path.isfile(cachedPostFilename): if os.path.isfile(cachedPostFilename):
os.remove(cachedPostFilename) os.remove(cachedPostFilename)
removePostFromCache(postJsonObject,recentPostsCache)
if not postJsonObject.get('object'): if not postJsonObject.get('object'):
if debug: if debug:
@ -205,7 +210,8 @@ def updateBookmarksCollection(baseDir: str,postFilename: str, \
bookmarksIndexFile.write(bookmarkIndex+'\n') bookmarksIndexFile.write(bookmarkIndex+'\n')
bookmarksIndexFile.close() bookmarksIndexFile.close()
def bookmark(session,baseDir: str,federationList: [], \ def bookmark(recentPostsCache: {}, \
session,baseDir: str,federationList: [], \
nickname: str,domain: str,port: int, \ nickname: str,domain: str,port: int, \
ccList: [],httpPrefix: str, \ ccList: [],httpPrefix: str, \
objectUrl: str,actorBookmarked: str, \ objectUrl: str,actorBookmarked: str, \
@ -264,7 +270,8 @@ def bookmark(session,baseDir: str,federationList: [], \
print('DEBUG: bookmark objectUrl: '+objectUrl) print('DEBUG: bookmark objectUrl: '+objectUrl)
return None return None
updateBookmarksCollection(baseDir,postFilename,objectUrl, \ updateBookmarksCollection(recentPostsCache, \
baseDir,postFilename,objectUrl, \
newBookmarkJson['actor'],domain,debug) newBookmarkJson['actor'],domain,debug)
sendSignedJson(newBookmarkJson,session,baseDir, \ sendSignedJson(newBookmarkJson,session,baseDir, \
@ -277,7 +284,8 @@ def bookmark(session,baseDir: str,federationList: [], \
return newBookmarkJson return newBookmarkJson
def bookmarkPost(session,baseDir: str,federationList: [], \ def bookmarkPost(recentPostsCache: {}, \
session,baseDir: str,federationList: [], \
nickname: str,domain: str,port: int,httpPrefix: str, \ nickname: str,domain: str,port: int,httpPrefix: str, \
bookmarkNickname: str,bookmarkedomain: str,bookmarkPort: int, \ bookmarkNickname: str,bookmarkedomain: str,bookmarkPort: int, \
ccList: [], \ ccList: [], \
@ -305,12 +313,14 @@ def bookmarkPost(session,baseDir: str,federationList: [], \
httpPrefix+'://'+bookmarkedomain+':'+ \ httpPrefix+'://'+bookmarkedomain+':'+ \
str(bookmarkPort)+'/users/'+bookmarkNickname str(bookmarkPort)+'/users/'+bookmarkNickname
return bookmark(session,baseDir,federationList,nickname,domain,port, \ return bookmark(recentPostsCache, \
session,baseDir,federationList,nickname,domain,port, \
ccList,httpPrefix,objectUrl,actorBookmarked,clientToServer, \ ccList,httpPrefix,objectUrl,actorBookmarked,clientToServer, \
sendThreads,postLog,personCache,cachedWebfingers, \ sendThreads,postLog,personCache,cachedWebfingers, \
debug,projectVersion) debug,projectVersion)
def undoBookmark(session,baseDir: str,federationList: [], \ def undoBookmark(recentPostsCache: {}, \
session,baseDir: str,federationList: [], \
nickname: str,domain: str,port: int, \ nickname: str,domain: str,port: int, \
ccList: [],httpPrefix: str, \ ccList: [],httpPrefix: str, \
objectUrl: str,actorBookmarked: str, \ objectUrl: str,actorBookmarked: str, \
@ -370,7 +380,8 @@ def undoBookmark(session,baseDir: str,federationList: [], \
if not postFilename: if not postFilename:
return None return None
undoBookmarksCollectionEntry(baseDir,postFilename,objectUrl, \ undoBookmarksCollectionEntry(recentPostsCache, \
baseDir,postFilename,objectUrl, \
newBookmarkJson['actor'],domain,debug) newBookmarkJson['actor'],domain,debug)
sendSignedJson(newUndoBookmarkJson,session,baseDir, \ sendSignedJson(newUndoBookmarkJson,session,baseDir, \
@ -571,7 +582,8 @@ def sendUndoBookmarkViaServer(baseDir: str,session, \
return newUndoBookmarkJson return newUndoBookmarkJson
def outboxBookmark(baseDir: str,httpPrefix: str, \ def outboxBookmark(recentPostsCache: {}, \
baseDir: str,httpPrefix: str, \
nickname: str,domain: str,port: int, \ nickname: str,domain: str,port: int, \
messageJson: {},debug: bool) -> None: messageJson: {},debug: bool) -> None:
""" When a bookmark request is received by the outbox from c2s """ When a bookmark request is received by the outbox from c2s
@ -613,12 +625,14 @@ def outboxBookmark(baseDir: str,httpPrefix: str, \
print('DEBUG: c2s bookmark post not found in inbox or outbox') print('DEBUG: c2s bookmark post not found in inbox or outbox')
print(messageId) print(messageId)
return True return True
updateBookmarksCollection(baseDir,postFilename,messageId, \ updateBookmarksCollection(recentPostsCache, \
baseDir,postFilename,messageId, \
messageJson['actor'],domain,debug) messageJson['actor'],domain,debug)
if debug: if debug:
print('DEBUG: post bookmarked via c2s - '+postFilename) print('DEBUG: post bookmarked via c2s - '+postFilename)
def outboxUndoBookmark(baseDir: str,httpPrefix: str, \ def outboxUndoBookmark(recentPostsCache: {}, \
baseDir: str,httpPrefix: str, \
nickname: str,domain: str,port: int, \ nickname: str,domain: str,port: int, \
messageJson: {},debug: bool) -> None: messageJson: {},debug: bool) -> None:
""" When an undo bookmark request is received by the outbox from c2s """ When an undo bookmark request is received by the outbox from c2s
@ -670,7 +684,8 @@ def outboxUndoBookmark(baseDir: str,httpPrefix: str, \
print('DEBUG: c2s undo bookmark post not found in inbox or outbox') print('DEBUG: c2s undo bookmark post not found in inbox or outbox')
print(messageId) print(messageId)
return True return True
undoBookmarksCollectionEntry(baseDir,postFilename,messageId, \ undoBookmarksCollectionEntry(recentPostsCache, \
baseDir,postFilename,messageId, \
messageJson['actor'],domain,debug) messageJson['actor'],domain,debug)
if debug: if debug:
print('DEBUG: post undo bookmarked via c2s - '+postFilename) print('DEBUG: post undo bookmarked via c2s - '+postFilename)

View File

@ -671,12 +671,14 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug: if self.server.debug:
print('DEBUG: handle any bookmark requests') print('DEBUG: handle any bookmark requests')
outboxBookmark(self.server.baseDir,self.server.httpPrefix, \ outboxBookmark(self.server.recentPostsCache, \
self.server.baseDir,self.server.httpPrefix, \
self.postToNickname,self.server.domain,self.server.port, \ self.postToNickname,self.server.domain,self.server.port, \
messageJson,self.server.debug) messageJson,self.server.debug)
if self.server.debug: if self.server.debug:
print('DEBUG: handle any undo bookmark requests') print('DEBUG: handle any undo bookmark requests')
outboxUndoBookmark(self.server.baseDir,self.server.httpPrefix, \ outboxUndoBookmark(self.server.recentPostsCache, \
self.server.baseDir,self.server.httpPrefix, \
self.postToNickname,self.server.domain,self.server.port, \ self.postToNickname,self.server.domain,self.server.port, \
messageJson,self.server.debug) messageJson,self.server.debug)

View File

@ -856,7 +856,8 @@ def receiveLike(recentPostsCache: {}, \
messageJson['actor'],domain,debug) messageJson['actor'],domain,debug)
return True return True
def receiveUndoLike(session,handle: str,isGroup: bool,baseDir: str, \ def receiveUndoLike(recentPostsCache: {}, \
session,handle: str,isGroup: bool,baseDir: str, \
httpPrefix: str,domain :str,port: int, \ httpPrefix: str,domain :str,port: int, \
sendThreads: [],postLog: [],cachedWebfingers: {}, \ sendThreads: [],postLog: [],cachedWebfingers: {}, \
personCache: {},messageJson: {},federationList: [], \ personCache: {},messageJson: {},federationList: [], \
@ -904,7 +905,8 @@ def receiveUndoLike(session,handle: str,isGroup: bool,baseDir: str, \
return True return True
if debug: if debug:
print('DEBUG: liked post found in inbox. Now undoing.') print('DEBUG: liked post found in inbox. Now undoing.')
undoLikesCollectionEntry(baseDir,postFilename,messageJson['object'],messageJson['actor'],domain,debug) undoLikesCollectionEntry(recentPostsCache,baseDir,postFilename, \
messageJson['object'],messageJson['actor'],domain,debug)
return True return True
def receiveBookmark(session,handle: str,isGroup: bool,baseDir: str, \ def receiveBookmark(session,handle: str,isGroup: bool,baseDir: str, \
@ -1644,7 +1646,8 @@ def inboxAfterCapabilities(recentPostsCache: {},maxRecentPosts: int, \
print('DEBUG: Like accepted from '+actor) print('DEBUG: Like accepted from '+actor)
return False return False
if receiveUndoLike(session,handle,isGroup, \ if receiveUndoLike(recentPostsCache, \
session,handle,isGroup, \
baseDir,httpPrefix, \ baseDir,httpPrefix, \
domain,port, \ domain,port, \
sendThreads,postLog, \ sendThreads,postLog, \
@ -1657,7 +1660,8 @@ def inboxAfterCapabilities(recentPostsCache: {},maxRecentPosts: int, \
print('DEBUG: Undo like accepted from '+actor) print('DEBUG: Undo like accepted from '+actor)
return False return False
if receiveBookmark(session,handle,isGroup, \ if receiveBookmark(recentPostsCache, \
session,handle,isGroup, \
baseDir,httpPrefix, \ baseDir,httpPrefix, \
domain,port, \ domain,port, \
sendThreads,postLog, \ sendThreads,postLog, \
@ -1670,7 +1674,8 @@ def inboxAfterCapabilities(recentPostsCache: {},maxRecentPosts: int, \
print('DEBUG: Bookmark accepted from '+actor) print('DEBUG: Bookmark accepted from '+actor)
return False return False
if receiveUndoBookmark(session,handle,isGroup, \ if receiveUndoBookmark(recentPostsCache, \
session,handle,isGroup, \
baseDir,httpPrefix, \ baseDir,httpPrefix, \
domain,port, \ domain,port, \
sendThreads,postLog, \ sendThreads,postLog, \

View File

@ -24,7 +24,8 @@ from webfinger import webfingerHandle
from auth import createBasicAuthHeader from auth import createBasicAuthHeader
from posts import getPersonBox from posts import getPersonBox
def undoLikesCollectionEntry(baseDir: str,postFilename: str,objectUrl: str, \ def undoLikesCollectionEntry(recentPostsCache: {}, \
baseDir: str,postFilename: str,objectUrl: str, \
actor: str,domain: str,debug: bool) -> None: actor: str,domain: str,debug: bool) -> None:
"""Undoes a like for a particular actor """Undoes a like for a particular actor
""" """