forked from indymedia/epicyon
Saving avatar images
parent
4b1ef337b7
commit
80b2bc3a4e
52
person.py
52
person.py
|
@ -11,6 +11,7 @@ import commentjson
|
||||||
import os
|
import os
|
||||||
import fileinput
|
import fileinput
|
||||||
from Crypto.PublicKey import RSA
|
from Crypto.PublicKey import RSA
|
||||||
|
from shutil import copyfile
|
||||||
from webfinger import createWebfingerEndpoint
|
from webfinger import createWebfingerEndpoint
|
||||||
from webfinger import storeWebfingerEndpoint
|
from webfinger import storeWebfingerEndpoint
|
||||||
from posts import createOutbox
|
from posts import createOutbox
|
||||||
|
@ -22,6 +23,53 @@ def generateRSAKey() -> (str,str):
|
||||||
publicKeyPem = key.publickey().exportKey("PEM").decode("utf-8")
|
publicKeyPem = key.publickey().exportKey("PEM").decode("utf-8")
|
||||||
return privateKeyPem,publicKeyPem
|
return privateKeyPem,publicKeyPem
|
||||||
|
|
||||||
|
def setProfileImage(baseDir: str,httpPrefix :str,nickname: str,domain: str, \
|
||||||
|
imageFilename: str,imageType :str):
|
||||||
|
"""Saves the given image file as an avatar or background
|
||||||
|
image for the given person
|
||||||
|
"""
|
||||||
|
if not (imageFilename.endswith('.png') or \
|
||||||
|
imageFilename.endswith('.jpg') or \
|
||||||
|
imageFilename.endswith('.jpeg') or \
|
||||||
|
imageFilename.endswith('.gif')):
|
||||||
|
return
|
||||||
|
|
||||||
|
if port!=80 and port!=443:
|
||||||
|
if ':' not in domain:
|
||||||
|
domain=domain+':'+str(port)
|
||||||
|
|
||||||
|
handle=nickname.lower()+'@'+domain.lower()
|
||||||
|
personFilename=baseDir+'/accounts/'+handle+'.json'
|
||||||
|
if not os.path.isfile(personFilename):
|
||||||
|
return
|
||||||
|
if not os.path.isdir(baseDir+'/accounts/'+handle):
|
||||||
|
return
|
||||||
|
|
||||||
|
iconFilenameBase='icon'
|
||||||
|
if imageType=='avatar' or imageType=='icon':
|
||||||
|
iconFilenameBase='icon'
|
||||||
|
else:
|
||||||
|
iconFilenameBase='image'
|
||||||
|
|
||||||
|
mediaType='image/png'
|
||||||
|
iconFilename=iconFilenameBase+'.png'
|
||||||
|
if imageFilename.endswith('.jpg') or \
|
||||||
|
imageFilename.endswith('.jpeg'):
|
||||||
|
mediaType='image/jpeg'
|
||||||
|
iconFilename=iconFilenameBase+'.jpg'
|
||||||
|
if imageFilename.endswith('.gif'):
|
||||||
|
mediaType='image/gif'
|
||||||
|
iconFilename=iconFilenameBase+'.gif'
|
||||||
|
profileFilename=baseDir+'/accounts/'+handle+'/'+iconFilename
|
||||||
|
|
||||||
|
with open(personFilename, 'r') as fp:
|
||||||
|
personJson=commentjson.load(fp)
|
||||||
|
personJson[iconFilenameBase]['mediaType']=mediaType
|
||||||
|
personJson[iconFilenameBase]['url']=httpPrefix+'://'+domain+'/users/'+nickname+'/'+iconFilename
|
||||||
|
with open(personFilename, 'w') as fp:
|
||||||
|
commentjson.dump(personJson, fp, indent=4, sort_keys=False)
|
||||||
|
copyfile(imageFilename,profileFilename)
|
||||||
|
|
||||||
def createPersonBase(baseDir: str,nickname: str,domain: str,port: int, \
|
def createPersonBase(baseDir: str,nickname: str,domain: str,port: int, \
|
||||||
httpPrefix: str, saveToFile: bool,password=None) -> (str,str,{},{}):
|
httpPrefix: str, saveToFile: bool,password=None) -> (str,str,{},{}):
|
||||||
"""Returns the private key, public key, actor and webfinger endpoint
|
"""Returns the private key, public key, actor and webfinger endpoint
|
||||||
|
@ -62,11 +110,11 @@ def createPersonBase(baseDir: str,nickname: str,domain: str,port: int, \
|
||||||
'following': httpPrefix+'://'+domain+'/users/'+nickname+'/following',
|
'following': httpPrefix+'://'+domain+'/users/'+nickname+'/following',
|
||||||
'icon': {'mediaType': 'image/png',
|
'icon': {'mediaType': 'image/png',
|
||||||
'type': 'Image',
|
'type': 'Image',
|
||||||
'url': httpPrefix+'://'+domain+'/users/'+nickname+'_icon.png'},
|
'url': httpPrefix+'://'+domain+'/users/'+nickname+'/icon.png'},
|
||||||
'id': httpPrefix+'://'+domain+'/users/'+nickname,
|
'id': httpPrefix+'://'+domain+'/users/'+nickname,
|
||||||
'image': {'mediaType': 'image/png',
|
'image': {'mediaType': 'image/png',
|
||||||
'type': 'Image',
|
'type': 'Image',
|
||||||
'url': httpPrefix+'://'+domain+'/users/'+nickname+'.png'},
|
'url': httpPrefix+'://'+domain+'/users/'+nickname+'/image.png'},
|
||||||
'inbox': httpPrefix+'://'+domain+'/users/'+nickname+'/inbox',
|
'inbox': httpPrefix+'://'+domain+'/users/'+nickname+'/inbox',
|
||||||
'manuallyApprovesFollowers': False,
|
'manuallyApprovesFollowers': False,
|
||||||
'name': nickname,
|
'name': nickname,
|
||||||
|
|
Loading…
Reference in New Issue