From 24090ea4193e1b48b4e447826bd6bf31ccc35418 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 20 Aug 2019 13:39:59 +0100 Subject: [PATCH] Announce cache --- daemon.py | 3 +++ epicyon.py | 3 +++ webinterface.py | 37 ++++++++++++++++++++++++------------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/daemon.py b/daemon.py index 8cd5219e..7d9b0654 100644 --- a/daemon.py +++ b/daemon.py @@ -2949,6 +2949,9 @@ def runDaemon(projectVersion, \ if not os.path.isdir(baseDir+'/cache/actors'): print('Creating actors cache') os.mkdir(baseDir+'/cache/actors') + if not os.path.isdir(baseDir+'/cache/announce'): + print('Creating announce cache') + os.mkdir(baseDir+'/cache/announce') archiveDir=baseDir+'/archive' if not os.path.isdir(archiveDir): diff --git a/epicyon.py b/epicyon.py index b915bf7b..5e0876f2 100644 --- a/epicyon.py +++ b/epicyon.py @@ -324,6 +324,9 @@ if not os.path.isdir(baseDir+'/cache'): if not os.path.isdir(baseDir+'/cache/actors'): print('Creating actors cache') os.mkdir(baseDir+'/cache/actors') +if not os.path.isdir(baseDir+'/cache/announce'): + print('Creating announce cache') + os.mkdir(baseDir+'/cache/announce') if args.domain: domain=args.domain diff --git a/webinterface.py b/webinterface.py index 5fa1834a..cc2d4477 100644 --- a/webinterface.py +++ b/webinterface.py @@ -1023,20 +1023,31 @@ def individualPostAsHtml(baseDir: str, \ if postJsonObject.get('object'): if isinstance(postJsonObject['object'], str): # get the announced post - print('Getting Announce content for '+postJsonObject['object']) - asHeader = {'Accept': 'application/activity+json; profile="https://www.w3.org/ns/activitystreams"'} - announcedJson = getJson(session,postJsonObject['object'],asHeader,None,projectVersion,httpPrefix,domain) - if announcedJson: - if not announcedJson.get('type'): - return '' - if announcedJson['type']!='Create': - return '' - actorNickname=getNicknameFromActor(postJsonObject['actor']) - actorDomain,actorPort=getDomainFromActor(postJsonObject['actor']) - titleStr+='@'+actorNickname+'@'+actorDomain+' announced:
' - postJsonObject=announcedJson + announceCacheDir=baseDir+'/cache/announce/'+nickname + if not os.path.isdir(announceCacheDir): + os.mkdir(announceCacheDir) + announceFilename=announceCacheDir+'/'+postJsonObject['object'].replace('/','#')+'.json' + if os.path.isfile(announceFilename): + print('Reading cached Announce content for '+postJsonObject['object']) + with open(announceFilename, 'r') as fp: + postJsonObject=commentjson.load(fp) else: - return '' + print('Downloading Announce content for '+postJsonObject['object']) + asHeader = {'Accept': 'application/activity+json; profile="https://www.w3.org/ns/activitystreams"'} + announcedJson = getJson(session,postJsonObject['object'],asHeader,None,projectVersion,httpPrefix,domain) + if announcedJson: + if not announcedJson.get('type'): + return '' + if announcedJson['type']!='Create': + return '' + actorNickname=getNicknameFromActor(postJsonObject['actor']) + actorDomain,actorPort=getDomainFromActor(postJsonObject['actor']) + titleStr+='@'+actorNickname+'@'+actorDomain+' announced:
' + postJsonObject=announcedJson + with open(announceFilename, 'w') as fp: + commentjson.dump(postJsonObject, fp, indent=4, sort_keys=False) + else: + return '' else: return '' if not isinstance(postJsonObject['object'], dict):