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 person import createSharedInbox
|
||||||
from posts import outboxMessageCreateWrap
|
from posts import outboxMessageCreateWrap
|
||||||
from posts import savePostToBox
|
from posts import savePostToBox
|
||||||
|
from posts import sendToFollowers
|
||||||
|
from posts import postIsAddressedToPublic
|
||||||
from inbox import inboxPermittedMessage
|
from inbox import inboxPermittedMessage
|
||||||
from inbox import inboxMessageHasParams
|
from inbox import inboxMessageHasParams
|
||||||
from inbox import runInboxQueue
|
from inbox import runInboxQueue
|
||||||
|
@ -147,9 +149,20 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
postId=messageJson['id']
|
postId=messageJson['id']
|
||||||
else:
|
else:
|
||||||
postId=None
|
postId=None
|
||||||
savePostToBox(self.server.baseDir,postId, \
|
if postIsAddressedToPublic(self.server.baseDir, \
|
||||||
self.postToNickname, \
|
messageJson):
|
||||||
self.server.domain,messageJson,'outbox')
|
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
|
return True
|
||||||
|
|
||||||
def _updateInboxQueue(self,nickname: str,messageJson: {}) -> int:
|
def _updateInboxQueue(self,nickname: str,messageJson: {}) -> int:
|
||||||
|
|
21
posts.py
21
posts.py
|
@ -502,6 +502,27 @@ def postIsAddressedToFollowers(baseDir: str,
|
||||||
addressedToFollowers=True
|
addressedToFollowers=True
|
||||||
return addressedToFollowers
|
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,
|
def createPublicPost(baseDir: str,
|
||||||
nickname: str, domain: str, port: int,httpPrefix: str, \
|
nickname: str, domain: str, port: int,httpPrefix: str, \
|
||||||
content: str, followersOnly: bool, saveToFile: bool,
|
content: str, followersOnly: bool, saveToFile: bool,
|
||||||
|
|
Loading…
Reference in New Issue