mirror of https://gitlab.com/bashrc2/epicyon
Followers
parent
7d9c280e05
commit
d4a9de4690
102
inbox.py
102
inbox.py
|
@ -89,6 +89,7 @@ from categories import guessHashtagCategory
|
||||||
from context import hasValidContext
|
from context import hasValidContext
|
||||||
from speaker import updateSpeaker
|
from speaker import updateSpeaker
|
||||||
from announce import isSelfAnnounce
|
from announce import isSelfAnnounce
|
||||||
|
from announce import createAnnounce
|
||||||
from notifyOnPost import notifyWhenPersonPosts
|
from notifyOnPost import notifyWhenPersonPosts
|
||||||
|
|
||||||
|
|
||||||
|
@ -1899,79 +1900,56 @@ def _sendToGroupMembers(session, baseDir: str, handle: str, port: int,
|
||||||
followersFile = baseDir + '/accounts/' + handle + '/followers.txt'
|
followersFile = baseDir + '/accounts/' + handle + '/followers.txt'
|
||||||
if not os.path.isfile(followersFile):
|
if not os.path.isfile(followersFile):
|
||||||
return
|
return
|
||||||
|
if not postJsonObject.get('to'):
|
||||||
|
return
|
||||||
if not postJsonObject.get('object'):
|
if not postJsonObject.get('object'):
|
||||||
return
|
return
|
||||||
if not hasObjectDict(postJsonObject):
|
if not hasObjectDict(postJsonObject):
|
||||||
return
|
return
|
||||||
nickname = handle.split('@')[0]
|
nickname = handle.split('@')[0].replace('!', '')
|
||||||
# groupname = _getGroupName(baseDir, handle)
|
# groupname = _getGroupName(baseDir, handle)
|
||||||
domain = handle.split('@')[1]
|
domain = handle.split('@')[1]
|
||||||
domainFull = getFullDomain(domain, port)
|
domainFull = getFullDomain(domain, port)
|
||||||
# set sender
|
groupActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||||
|
if groupActor not in postJsonObject['to']:
|
||||||
|
return
|
||||||
cc = ''
|
cc = ''
|
||||||
sendingActor = postJsonObject['actor']
|
nickname = handle.split('@')[0].replace('!', '')
|
||||||
sendingActorNickname = getNicknameFromActor(sendingActor)
|
|
||||||
sendingActorDomain, sendingActorPort = \
|
if debug:
|
||||||
getDomainFromActor(sendingActor)
|
print('Group announce: ' + postJsonObject['object']['id'])
|
||||||
sendingActorDomainFull = \
|
announceJson = \
|
||||||
getFullDomain(sendingActorDomain, sendingActorPort)
|
createAnnounce(session, baseDir, federationList,
|
||||||
senderStr = '@' + sendingActorNickname + '@' + sendingActorDomainFull
|
nickname, domain, port,
|
||||||
contentStr = getBaseContentFromPost(postJsonObject, systemLanguage)
|
groupActor + '/followers', cc,
|
||||||
if not contentStr.startswith(senderStr):
|
httpPrefix,
|
||||||
pprint(postJsonObject)
|
postJsonObject['object']['id'],
|
||||||
postJsonObject['object']['content'] = \
|
False, False,
|
||||||
senderStr + ' ' + contentStr
|
sendThreads, postLog,
|
||||||
postJsonObject['object']['contentMap'][systemLanguage] = \
|
personCache, cachedWebfingers,
|
||||||
senderStr + ' ' + contentStr
|
debug, __version__)
|
||||||
# add mention to tag list
|
|
||||||
if not postJsonObject['object']['tag']:
|
|
||||||
postJsonObject['object']['tag'] = []
|
|
||||||
# check if the mention already exists
|
|
||||||
mentionExists = False
|
|
||||||
for mention in postJsonObject['object']['tag']:
|
|
||||||
if mention['type'] == 'Mention':
|
|
||||||
if mention.get('href'):
|
|
||||||
if mention['href'] == sendingActor:
|
|
||||||
mentionExists = True
|
|
||||||
if not mentionExists:
|
|
||||||
# add the mention of the original sender
|
|
||||||
postJsonObject['object']['tag'].append({
|
|
||||||
'href': sendingActor,
|
|
||||||
'name': senderStr,
|
|
||||||
'type': 'Mention'
|
|
||||||
})
|
|
||||||
|
|
||||||
postJsonObject['actor'] = \
|
|
||||||
httpPrefix + '://' + domainFull + '/users/' + nickname
|
|
||||||
postJsonObject['to'] = \
|
|
||||||
[postJsonObject['actor'] + '/followers']
|
|
||||||
postJsonObject['cc'] = [cc]
|
|
||||||
postJsonObject['object']['to'] = postJsonObject['to']
|
|
||||||
postJsonObject['object']['cc'] = [cc]
|
|
||||||
# set subject
|
|
||||||
if not postJsonObject['object'].get('summary'):
|
|
||||||
postJsonObject['object']['summary'] = 'General Discussion'
|
|
||||||
domain = removeDomainPort(domain)
|
|
||||||
with open(followersFile, 'r') as groupMembers:
|
with open(followersFile, 'r') as groupMembers:
|
||||||
for memberHandle in groupMembers:
|
for memberHandle in groupMembers:
|
||||||
if memberHandle != handle:
|
if memberHandle == handle:
|
||||||
memberNickname = memberHandle.split('@')[0]
|
continue
|
||||||
groupAccount = False
|
memberNickname = memberHandle.split('@')[0]
|
||||||
if memberNickname.startswith('!'):
|
if memberNickname.startswith('!'):
|
||||||
memberNickname = memberNickname[1:]
|
# don't have groups which are members of groups
|
||||||
groupAccount = True
|
continue
|
||||||
memberDomain = memberHandle.split('@')[1]
|
memberDomain = memberHandle.split('@')[1]
|
||||||
memberPort = port
|
memberPort = port
|
||||||
if ':' in memberDomain:
|
if ':' in memberDomain:
|
||||||
memberPort = getPortFromDomain(memberDomain)
|
memberPort = getPortFromDomain(memberDomain)
|
||||||
memberDomain = removeDomainPort(memberDomain)
|
memberDomain = removeDomainPort(memberDomain)
|
||||||
sendSignedJson(postJsonObject, session, baseDir,
|
groupAccount = False
|
||||||
nickname, domain, port,
|
sendSignedJson(announceJson, session, baseDir,
|
||||||
memberNickname, memberDomain, memberPort, cc,
|
nickname, domain, port,
|
||||||
httpPrefix, False, False, federationList,
|
memberNickname, memberDomain, memberPort, cc,
|
||||||
sendThreads, postLog, cachedWebfingers,
|
httpPrefix, False, False, federationList,
|
||||||
personCache, debug, __version__, None,
|
sendThreads, postLog, cachedWebfingers,
|
||||||
groupAccount)
|
personCache, debug, __version__, None,
|
||||||
|
groupAccount)
|
||||||
|
|
||||||
|
|
||||||
def _inboxUpdateCalendar(baseDir: str, handle: str,
|
def _inboxUpdateCalendar(baseDir: str, handle: str,
|
||||||
|
|
6
tests.py
6
tests.py
|
@ -1655,7 +1655,7 @@ def testGroupFollow():
|
||||||
print('\n\n*********************************************************')
|
print('\n\n*********************************************************')
|
||||||
print('Check that post was relayed from test group to bob')
|
print('Check that post was relayed from test group to bob')
|
||||||
|
|
||||||
# bobMessageArrived = False
|
bobMessageArrived = False
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
if os.path.isdir(inboxPathBob):
|
if os.path.isdir(inboxPathBob):
|
||||||
|
@ -1663,11 +1663,11 @@ def testGroupFollow():
|
||||||
len([name for name in os.listdir(inboxPathBob)
|
len([name for name in os.listdir(inboxPathBob)
|
||||||
if os.path.isfile(os.path.join(inboxPathBob, name))])
|
if os.path.isfile(os.path.join(inboxPathBob, name))])
|
||||||
if currPostsBob > startPostsBob:
|
if currPostsBob > startPostsBob:
|
||||||
# bobMessageArrived = True
|
bobMessageArrived = True
|
||||||
print('Bob received relayed group post!')
|
print('Bob received relayed group post!')
|
||||||
break
|
break
|
||||||
|
|
||||||
# assert bobMessageArrived is True
|
assert bobMessageArrived is True
|
||||||
|
|
||||||
# stop the servers
|
# stop the servers
|
||||||
thrAlice.kill()
|
thrAlice.kill()
|
||||||
|
|
Loading…
Reference in New Issue