forked from indymedia/epicyon
c2s post distribution to followers
parent
ce44f6ffcb
commit
c6a93e624d
19
daemon.py
19
daemon.py
|
@ -21,6 +21,8 @@ from person import personBoxJson
|
|||
from person import createSharedInbox
|
||||
from posts import outboxMessageCreateWrap
|
||||
from posts import savePostToBox
|
||||
from posts import sendToFollowers
|
||||
from posts import postIsAddressedToPublic
|
||||
from inbox import inboxPermittedMessage
|
||||
from inbox import inboxMessageHasParams
|
||||
from inbox import runInboxQueue
|
||||
|
@ -147,9 +149,20 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
postId=messageJson['id']
|
||||
else:
|
||||
postId=None
|
||||
savePostToBox(self.server.baseDir,postId, \
|
||||
self.postToNickname, \
|
||||
self.server.domain,messageJson,'outbox')
|
||||
if postIsAddressedToPublic(self.server.baseDir, \
|
||||
messageJson):
|
||||
if self.server.debug:
|
||||
print('DEBUG: saving c2s post to outbox')
|
||||
savePostToBox(self.server.baseDir,postId, \
|
||||
self.postToNickname, \
|
||||
self.server.domain,messageJson,'outbox')
|
||||
if self.server.debug:
|
||||
print('DEBUG: sending c2s post to followers')
|
||||
sendToFollowers(self.server.session,self.server.baseDir, \
|
||||
self.postToNickname,self.server.domain, \
|
||||
self.server.port,self.server.httpPrefix,
|
||||
messageJson)
|
||||
# TODO send to individual named addresses
|
||||
return True
|
||||
|
||||
def _updateInboxQueue(self,nickname: str,messageJson: {}) -> int:
|
||||
|
|
21
posts.py
21
posts.py
|
@ -502,6 +502,27 @@ def postIsAddressedToFollowers(baseDir: str,
|
|||
addressedToFollowers=True
|
||||
return addressedToFollowers
|
||||
|
||||
def postIsAddressedToPublic(baseDir: str,postJsonObject: {}) -> bool:
|
||||
"""Returns true if the given post is addressed to public
|
||||
"""
|
||||
if not postJsonObject.get('object'):
|
||||
return False
|
||||
if not postJsonObject['object'].get('to'):
|
||||
return False
|
||||
|
||||
publicUrl='https://www.w3.org/ns/activitystreams#Public'
|
||||
|
||||
# does the public url exist in 'to' or 'cc' lists?
|
||||
addressedToPublic=False
|
||||
if publicUrl in postJsonObject['object']['to']:
|
||||
addressedToPublic=True
|
||||
if not addressedToPublic:
|
||||
if not postJsonObject['object'].get('cc'):
|
||||
return False
|
||||
if publicUrl in postJsonObject['object']['cc']:
|
||||
addressedToPublic=True
|
||||
return addressedToPublic
|
||||
|
||||
def createPublicPost(baseDir: str,
|
||||
nickname: str, domain: str, port: int,httpPrefix: str, \
|
||||
content: str, followersOnly: bool, saveToFile: bool,
|
||||
|
|
Loading…
Reference in New Issue