2020-12-12 20:59:40 +01:00
|
|
|
import re, string, random, base64
|
|
|
|
from lib.cesiumCommon import CesiumCommon, PUBKEY_REGEX
|
|
|
|
from lib.messaging import ReadFromCesium, SendToCesium, DeleteFromCesium
|
|
|
|
from lib.profiles import Profiles
|
2021-07-01 00:47:13 +02:00
|
|
|
from lib.stars import ReadLikes, SendLikes, UnLikes
|
2021-02-24 16:13:19 +01:00
|
|
|
from lib.offers import Offers
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
class CesiumPlus(CesiumCommon):
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
#################### Messaging ####################
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
def read(self, nbrMsg, outbox, isJSON):
|
2020-12-12 20:59:40 +01:00
|
|
|
readCesium = ReadFromCesium(self.dunikey, self.pod)
|
|
|
|
jsonMsg = readCesium.sendDocument(nbrMsg, outbox)
|
2020-12-12 01:26:39 +01:00
|
|
|
if isJSON:
|
2020-12-12 20:59:40 +01:00
|
|
|
jsonFormat = readCesium.jsonMessages(jsonMsg, nbrMsg, outbox)
|
2020-12-12 01:26:39 +01:00
|
|
|
print(jsonFormat)
|
|
|
|
else:
|
2020-12-12 20:59:40 +01:00
|
|
|
readCesium.readMessages(jsonMsg, nbrMsg, outbox)
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
def send(self, title, msg, recipient, outbox):
|
|
|
|
sendCesium = SendToCesium(self.dunikey, self.pod)
|
|
|
|
sendCesium.recipient = recipient
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
# Generate pseudo-random nonce
|
|
|
|
nonce=[]
|
|
|
|
for _ in range(32):
|
|
|
|
nonce.append(random.choice(string.ascii_letters + string.digits))
|
2020-12-12 20:59:40 +01:00
|
|
|
sendCesium.nonce = base64.b64decode(''.join(nonce))
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
finalDoc = sendCesium.configDoc(sendCesium.encryptMsg(title), sendCesium.encryptMsg(msg)) # Configure JSON document to send
|
|
|
|
sendCesium.sendDocument(finalDoc, outbox) # Send final signed document
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
def delete(self, idsMsgList, outbox):
|
|
|
|
deleteCesium = DeleteFromCesium(self.dunikey, self.pod)
|
|
|
|
# deleteCesium.issuer = recipient
|
2020-12-12 01:26:39 +01:00
|
|
|
for idMsg in idsMsgList:
|
2020-12-12 20:59:40 +01:00
|
|
|
finalDoc = deleteCesium.configDoc(idMsg, outbox)
|
|
|
|
deleteCesium.sendDocument(finalDoc, idMsg)
|
2020-12-12 01:26:39 +01:00
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
#################### Profiles ####################
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
def set(self, name=None, description=None, ville=None, adresse=None, position=None, site=None, avatar=None):
|
2020-12-12 20:59:40 +01:00
|
|
|
setProfile = Profiles(self.dunikey, self.pod)
|
|
|
|
document = setProfile.configDocSet(name, description, ville, adresse, position, site, avatar)
|
|
|
|
result = setProfile.sendDocument(document,'set')
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
print(result)
|
|
|
|
return result
|
|
|
|
|
|
|
|
def get(self, profile=None, avatar=None):
|
2020-12-12 20:59:40 +01:00
|
|
|
getProfile = Profiles(self.dunikey, self.pod, self.noNeedDunikey)
|
2020-12-12 01:26:39 +01:00
|
|
|
if not profile:
|
|
|
|
profile = self.pubkey
|
|
|
|
if not re.match(PUBKEY_REGEX, profile) or len(profile) > 45:
|
|
|
|
scope = 'title'
|
|
|
|
else:
|
|
|
|
scope = '_id'
|
|
|
|
|
2020-12-12 20:59:40 +01:00
|
|
|
document = getProfile.configDocGet(profile, scope, avatar)
|
|
|
|
resultJSON = getProfile.sendDocument(document, 'get')
|
|
|
|
result = getProfile.parseJSON(resultJSON)
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
print(result)
|
|
|
|
|
|
|
|
def erase(self):
|
2020-12-12 20:59:40 +01:00
|
|
|
eraseProfile = Profiles(self.dunikey, self.pod)
|
|
|
|
document = eraseProfile.configDocErase()
|
|
|
|
result = eraseProfile.sendDocument(document,'erase')
|
2020-12-12 01:26:39 +01:00
|
|
|
|
|
|
|
print(result)
|
2020-12-12 20:59:40 +01:00
|
|
|
|
|
|
|
#################### Likes ####################
|
|
|
|
|
|
|
|
def readLikes(self, profile=False):
|
|
|
|
likes = ReadLikes(self.dunikey, self.pod, self.noNeedDunikey)
|
|
|
|
document = likes.configDoc(profile)
|
|
|
|
result = likes.sendDocument(document)
|
|
|
|
result = likes.parseResult(result)
|
|
|
|
|
|
|
|
print(result)
|
|
|
|
|
|
|
|
def like(self, stars, profile=False):
|
|
|
|
likes = SendLikes(self.dunikey, self.pod)
|
|
|
|
document = likes.configDoc(profile, stars)
|
|
|
|
if document:
|
|
|
|
likes.sendDocument(document, profile)
|
|
|
|
|
|
|
|
def unLike(self, pubkey, silent=False):
|
|
|
|
likes = UnLikes(self.dunikey, self.pod)
|
|
|
|
idLike = likes.checkLike(pubkey)
|
|
|
|
if idLike:
|
|
|
|
document = likes.configDoc(idLike)
|
|
|
|
likes.sendDocument(document, silent)
|
2021-02-24 16:13:19 +01:00
|
|
|
|
|
|
|
#################### Offer ####################
|
|
|
|
|
|
|
|
def setOffer(self, title=None, description=None, city=None, localisation=None, category=None, price=None, picture=None):
|
|
|
|
setOffer = Offers(self.dunikey, self.pod)
|
|
|
|
document = setOffer.configDocSet(title, description, city, localisation, category, price, picture)
|
|
|
|
result = setOffer.sendDocumentSet(document,'set')
|
|
|
|
|
2021-07-01 00:47:13 +02:00
|
|
|
# print(result)
|
2021-02-24 16:13:19 +01:00
|
|
|
return result
|
|
|
|
|
|
|
|
def getOffer(self, id, avatar=None):
|
|
|
|
getOffer = Offers(self.dunikey, self.pod, self.noNeedDunikey)
|
2021-07-01 00:47:13 +02:00
|
|
|
|
2021-02-24 16:13:19 +01:00
|
|
|
resultJSON = getOffer.sendDocumentGet(id, 'get')
|
2021-07-01 00:47:13 +02:00
|
|
|
# print(resultJSON)
|
2021-02-24 16:13:19 +01:00
|
|
|
result = getOffer.parseJSON(resultJSON)
|
|
|
|
|
|
|
|
print(result)
|
|
|
|
|
|
|
|
def deleteOffer(self, id):
|
|
|
|
eraseOffer = Offers(self.dunikey, self.pod)
|
|
|
|
document = eraseOffer.configDocErase(id)
|
|
|
|
result = eraseOffer.sendDocumentSet(document,'delete', id)
|
|
|
|
|
|
|
|
print(result)
|