Save blogs to their own box

main
Bob Mottram 2020-02-24 22:34:54 +00:00
parent fd24aee2fc
commit 7c37ffcd36
3 changed files with 45 additions and 28 deletions

View File

@ -627,6 +627,7 @@ if args.message:
mediaType=getAttachmentMediaType(attach)
replyTo=args.replyto
followersOnly=False
isArticle=False
print('Sending post to '+args.sendto)
sendPostViaServer(__version__, \
@ -636,7 +637,7 @@ if args.message:
httpPrefix,sendMessage,followersOnly, \
attach,mediaType, \
attachedImageDescription,useBlurhash, \
cachedWebfingers,personCache, \
cachedWebfingers,personCache,isArticle, \
args.debug,replyTo,replyTo,subject)
for i in range(10):
# TODO detect send success/fail

View File

@ -403,7 +403,7 @@ def getPosts(session,outboxUrl: str,maxPosts: int, \
def deleteAllPosts(baseDir: str,nickname: str, domain: str,boxname: str) -> None:
"""Deletes all posts for a person from inbox or outbox
"""
if boxname!='inbox' and boxname!='outbox':
if boxname!='inbox' and boxname!='outbox' and boxname!='tlblogs':
return
boxDir = createPersonDir(nickname,domain,baseDir,boxname)
for deleteFilename in os.scandir(boxDir):
@ -422,7 +422,8 @@ def savePostToBox(baseDir: str,httpPrefix: str,postId: str, \
"""Saves the give json to the give box
Returns the filename
"""
if boxname!='inbox' and boxname!='outbox' and boxname!='scheduled':
if boxname!='inbox' and boxname!='outbox' and \
boxname!='tlblogs' and boxname!='scheduled':
return None
originalDomain=domain
if ':' in domain:
@ -507,7 +508,8 @@ def createPostBase(baseDir: str,nickname: str,domain: str,port: int, \
followersOnly: bool,saveToFile: bool,clientToServer: bool, \
attachImageFilename: str, \
mediaType: str,imageDescription: str, \
useBlurhash: bool,isModerationReport: bool,inReplyTo=None, \
useBlurhash: bool,isModerationReport: bool,isArticle: bool, \
inReplyTo=None, \
inReplyToAtomUri=None,subject=None, \
schedulePost=False, \
eventDate=None,eventTime=None,location=None) -> {}:
@ -766,8 +768,12 @@ def createPostBase(baseDir: str,nickname: str,domain: str,port: int, \
print('Unable to create scheduled post without date and time values')
return newPost
elif saveToFile:
savePostToBox(baseDir,httpPrefix,newPostId, \
nickname,domain,newPost,'outbox')
if not isArticle:
savePostToBox(baseDir,httpPrefix,newPostId, \
nickname,domain,newPost,'outbox')
else:
savePostToBox(baseDir,httpPrefix,newPostId, \
nickname,domain,newPost,'tlblogs')
return newPost
def outboxMessageCreateWrap(httpPrefix: str, \
@ -889,7 +895,7 @@ def createPublicPost(baseDir: str, \
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo,inReplyToAtomUri,subject, \
False,False,inReplyTo,inReplyToAtomUri,subject, \
schedulePost,eventDate,eventTime,location)
def createBlogPost(baseDir: str, \
@ -938,7 +944,7 @@ def createQuestionPost(baseDir: str,
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,None,None,subject, \
False,False,None,None,subject, \
False,None,None,None)
messageJson['object']['type']='Question'
messageJson['object']['oneOf']=[]
@ -982,7 +988,7 @@ def createUnlistedPost(baseDir: str,
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo, inReplyToAtomUri, subject, \
False,False,inReplyTo,inReplyToAtomUri,subject, \
schedulePost,eventDate,eventTime,location)
def createFollowersOnlyPost(baseDir: str,
@ -1008,7 +1014,7 @@ def createFollowersOnlyPost(baseDir: str,
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo, inReplyToAtomUri, subject, \
False,False,inReplyTo,inReplyToAtomUri,subject, \
schedulePost,eventDate,eventTime,location)
def getMentionedPeople(baseDir: str,httpPrefix: str, \
@ -1071,7 +1077,7 @@ def createDirectMessagePost(baseDir: str,
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo,inReplyToAtomUri,subject, \
False,False,inReplyTo,inReplyToAtomUri,subject, \
schedulePost,eventDate,eventTime,location)
# mentioned recipients go into To rather than Cc
messageJson['to']=messageJson['object']['cc']
@ -1160,7 +1166,7 @@ def createReportPost(baseDir: str,
clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
True,None,None,subject, \
True,False,None,None,subject, \
False,None,None,None)
if not postJsonObject:
continue
@ -1246,6 +1252,7 @@ def sendPost(projectVersion: str, \
imageDescription: str,useBlurhash: bool, \
federationList: [],\
sendThreads: [], postLog: [], cachedWebfingers: {},personCache: {}, \
isArticle: bool, \
debug=False,inReplyTo=None,inReplyToAtomUri=None,subject=None) -> int:
"""Post to another inbox
"""
@ -1273,6 +1280,8 @@ def sendPost(projectVersion: str, \
postToBox='inbox'
else:
postToBox='outbox'
if isArticle:
postToBox='tlblogs'
# get the actor inbox for the To handle
inboxUrl,pubKeyId,pubKey,toPersonId,sharedInbox,capabilityAcquisition,avatarUrl,displayName = \
@ -1294,14 +1303,14 @@ def sendPost(projectVersion: str, \
if not toPersonId:
return 5
# sharedInbox and capabilities are optional
postJsonObject = \
createPostBase(baseDir,nickname,domain,port, \
toPersonId,cc,httpPrefix,content, \
followersOnly,saveToFile,clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo,inReplyToAtomUri,subject, \
False,isArticle,inReplyTo,inReplyToAtomUri,subject, \
False,None,None,None)
# get the senders private key
@ -1350,6 +1359,7 @@ def sendPostViaServer(projectVersion: str, \
attachImageFilename: str,mediaType: str, \
imageDescription: str,useBlurhash: bool, \
cachedWebfingers: {},personCache: {}, \
isArticle: bool, \
debug=False,inReplyTo=None, \
inReplyToAtomUri=None,subject=None) -> int:
"""Send a post via a proxy (c2s)
@ -1376,6 +1386,8 @@ def sendPostViaServer(projectVersion: str, \
return 1
postToBox='outbox'
if isArticle:
postToBox='tlblogs'
# get the actor inbox for the To handle
inboxUrl,pubKeyId,pubKey,fromPersonId,sharedInbox,capabilityAcquisition,avatarUrl,displayName = \
@ -1417,6 +1429,7 @@ def sendPostViaServer(projectVersion: str, \
if ':' not in toDomain:
toDomainFull=toDomain+':'+str(toPort)
toPersonId=httpPrefix+'://'+toDomainFull+'/users/'+toNickname
postJsonObject = \
createPostBase(baseDir, \
fromNickname,fromDomain,fromPort, \
@ -1424,7 +1437,7 @@ def sendPostViaServer(projectVersion: str, \
followersOnly,saveToFile,clientToServer, \
attachImageFilename,mediaType, \
imageDescription,useBlurhash, \
False,inReplyTo,inReplyToAtomUri,subject, \
False,isArticle,inReplyTo,inReplyToAtomUri,subject, \
False,None,None,None)
authHeader=createBasicAuthHeader(fromNickname,password)

View File

@ -422,19 +422,20 @@ def testPostMessageBetweenServers():
mediaType=getAttachmentMediaType(attachedImageFilename)
attachedImageDescription='Logo'
useBlurhash=True
isArticle=False
# nothing in Alice's outbox
outboxPath=aliceDir+'/accounts/alice@'+aliceDomain+'/outbox'
assert len([name for name in os.listdir(outboxPath) if os.path.isfile(os.path.join(outboxPath, name))])==0
sendResult = \
sendPost(__version__, \
sessionAlice,aliceDir,'alice', aliceDomain, alicePort, \
'bob', bobDomain, bobPort, ccUrl, httpPrefix, \
'Why is a mouse when it spins? यह एक परीक्षण है #sillyquestion', followersOnly, \
saveToFile, clientToServer,attachedImageFilename,mediaType, \
attachedImageDescription,useBlurhash, federationList, \
aliceSendThreads, alicePostLog, aliceCachedWebfingers, \
alicePersonCache,inReplyTo, inReplyToAtomUri, subject)
sessionAlice,aliceDir,'alice',aliceDomain,alicePort, \
'bob',bobDomain,bobPort,ccUrl,httpPrefix, \
'Why is a mouse when it spins? यह एक परीक्षण है #sillyquestion',followersOnly, \
saveToFile,clientToServer,attachedImageFilename,mediaType, \
attachedImageDescription,useBlurhash,federationList, \
aliceSendThreads,alicePostLog,aliceCachedWebfingers, \
alicePersonCache,isArticle,inReplyTo,inReplyToAtomUri,subject)
print('sendResult: '+str(sendResult))
queuePath=bobDir+'/accounts/bob@'+bobDomain+'/queue'
@ -669,14 +670,15 @@ def testFollowBetweenServers():
aliceCachedWebfingers={}
alicePostLog=[]
useBlurhash=False
isArticle=False
sendResult = \
sendPost(__version__, \
sessionAlice,aliceDir,'alice', aliceDomain, alicePort, \
'bob', bobDomain, bobPort, ccUrl, \
httpPrefix, 'Alice message', followersOnly, saveToFile, \
sessionAlice,aliceDir,'alice',aliceDomain,alicePort, \
'bob',bobDomain,bobPort,ccUrl, \
httpPrefix,'Alice message',followersOnly,saveToFile, \
clientToServer,None,None,None,useBlurhash, federationList, \
aliceSendThreads, alicePostLog, aliceCachedWebfingers, \
alicePersonCache,inReplyTo, inReplyToAtomUri, subject)
aliceSendThreads,alicePostLog,aliceCachedWebfingers, \
alicePersonCache,isArticle,inReplyTo,inReplyToAtomUri,subject)
print('sendResult: '+str(sendResult))
queuePath=bobDir+'/accounts/bob@'+bobDomain+'/queue'
@ -1101,6 +1103,7 @@ def testClientToServer():
mediaType=getAttachmentMediaType(attachedImageFilename)
attachedImageDescription='Logo'
useBlurhash=False
isArticle=False
cachedWebfingers={}
personCache={}
password='alicepass'
@ -1116,7 +1119,7 @@ def testClientToServer():
httpPrefix,'Sent from my ActivityPub client',followersOnly, \
attachedImageFilename,mediaType, \
attachedImageDescription,useBlurhash, \
cachedWebfingers,personCache, \
cachedWebfingers,personCache,isArticle, \
True,None,None,None)
print('sendResult: '+str(sendResult))