forked from indymedia/epicyon
Return capability id and account
parent
77e2ec39bc
commit
08fdf5fa0a
26
follow.py
26
follow.py
|
@ -7,6 +7,7 @@ __email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import commentjson
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -351,15 +352,18 @@ def sendFollowRequest(session,baseDir: str, \
|
||||||
|
|
||||||
def getFollowersOfActor(baseDir :str,actor :str) -> []:
|
def getFollowersOfActor(baseDir :str,actor :str) -> []:
|
||||||
"""In a shared inbox if we receive a post we know who it's from
|
"""In a shared inbox if we receive a post we know who it's from
|
||||||
and if it's addressed to followers then we need to get a list of those
|
and if it's addressed to followers then we need to get a list of those.
|
||||||
|
This returns a list of account handles which follow the given actor
|
||||||
|
and also the corresponding capability id if it exists
|
||||||
"""
|
"""
|
||||||
result=[]
|
result=[]
|
||||||
|
if ':' not in actor:
|
||||||
|
return result
|
||||||
|
httpPrefix=actor.split(':')[0]
|
||||||
nickname=getNicknameFromActor(actor)
|
nickname=getNicknameFromActor(actor)
|
||||||
print("nickname: "+nickname)
|
|
||||||
if not nickname:
|
if not nickname:
|
||||||
return result
|
return result
|
||||||
domain,port=getDomainFromActor(actor)
|
domain,port=getDomainFromActor(actor)
|
||||||
print("domain: "+domain)
|
|
||||||
if not domain:
|
if not domain:
|
||||||
return result
|
return result
|
||||||
actorHandle=nickname+'@'+domain
|
actorHandle=nickname+'@'+domain
|
||||||
|
@ -367,12 +371,18 @@ def getFollowersOfActor(baseDir :str,actor :str) -> []:
|
||||||
for subdir, dirs, files in os.walk(baseDir+'/accounts'):
|
for subdir, dirs, files in os.walk(baseDir+'/accounts'):
|
||||||
for account in dirs:
|
for account in dirs:
|
||||||
if '@' in account and not account.startswith('inbox@'):
|
if '@' in account and not account.startswith('inbox@'):
|
||||||
print("account: "+account)
|
|
||||||
followingFilename = os.path.join(subdir, account)+'/following.txt'
|
followingFilename = os.path.join(subdir, account)+'/following.txt'
|
||||||
if os.path.isfile(followingFilename):
|
if os.path.isfile(followingFilename):
|
||||||
print("followingFilename: "+followingFilename)
|
|
||||||
print("actorHandle: "+actorHandle)
|
|
||||||
# does this account follow the given actor?
|
# does this account follow the given actor?
|
||||||
if actorHandle in open(followingFilename).read():
|
if actorHandle in open(followingFilename).read():
|
||||||
result.append(account)
|
ocapFilename=baseDir+'/accounts/'+account+'/ocap/granted/'+httpPrefix+':##'+domain+':'+str(port)+'#users#'+nickname+'.json'
|
||||||
|
if os.path.isfile(ocapFilename):
|
||||||
|
with open(ocapFilename, 'r') as fp:
|
||||||
|
ocapJson=commentjson.load(fp)
|
||||||
|
if ocapJson.get('id'):
|
||||||
|
result.append([account,ocapJson['id']])
|
||||||
|
else:
|
||||||
|
result.append([account,None])
|
||||||
|
else:
|
||||||
|
result.append([account,None])
|
||||||
return result
|
return result
|
||||||
|
|
5
tests.py
5
tests.py
|
@ -362,9 +362,10 @@ def testFollowBetweenServers():
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
actorFollows=getFollowersOfActor(aliceDir,httpPrefix+'://'+bobDomain+':'+str(bobPort)+'/users/bob')
|
actorFollows=getFollowersOfActor(aliceDir,httpPrefix+'://'+bobDomain+':'+str(bobPort)+'/users/bob')
|
||||||
|
print(str(actorFollows))
|
||||||
assert len(actorFollows)==1
|
assert len(actorFollows)==1
|
||||||
print("actorFollows: "+actorFollows[0])
|
assert actorFollows[0][0]=='alice@'+aliceDomain
|
||||||
assert actorFollows[0]=='alice@'+aliceDomain
|
assert actorFollows[0][1].startswith(httpPrefix+'://'+bobDomain+':'+str(bobPort)+'/caps/')
|
||||||
|
|
||||||
print('\n\nEve tries to send to Bob')
|
print('\n\nEve tries to send to Bob')
|
||||||
sessionEve = createSession(eveDomain,evePort,useTor)
|
sessionEve = createSession(eveDomain,evePort,useTor)
|
||||||
|
|
Loading…
Reference in New Issue