jaklis/lib/cesium.py

171 lines
5.5 KiB
Python
Raw Permalink Normal View History

2023-09-09 09:38:22 +02:00
import json
2020-12-07 16:42:22 +01:00
import re, string, random, base64
from lib.cesiumCommon import CesiumCommon, PUBKEY_REGEX
2023-09-09 09:38:22 +02:00
from lib.geolocProfiles import GeolocProfiles
2022-10-23 03:31:27 +02:00
from lib.getPages import Pages
2020-12-07 16:02:31 +01:00
from lib.messaging import ReadFromCesium, SendToCesium, DeleteFromCesium
2020-12-07 16:42:22 +01:00
from lib.profiles import Profiles
2021-06-30 05:29:22 +02:00
from lib.stars import ReadLikes, SendLikes, UnLikes
2021-02-14 18:18:01 +01:00
from lib.offers import Offers
2020-12-07 16:42:22 +01:00
2023-09-09 09:38:22 +02:00
class CesiumPlus(CesiumCommon):
2020-12-07 16:42:22 +01:00
#################### Messaging ####################
2023-09-10 09:44:52 +02:00
def read(self, nbrMsg, isJSON, outbox):
2023-09-09 09:38:22 +02:00
readCesium = ReadFromCesium(self.dunikey, self.pod)
jsonMsg = readCesium.sendDocument(nbrMsg, outbox)
if isJSON:
jsonFormat = readCesium.jsonMessages(jsonMsg, nbrMsg, outbox)
print(jsonFormat)
else:
readCesium.readMessages(jsonMsg, nbrMsg, outbox)
def send(self, title, msg, recipient, outbox):
sendCesium = SendToCesium(self.dunikey, self.pod)
sendCesium.recipient = recipient
# Generate pseudo-random nonce
2023-09-09 09:38:22 +02:00
nonce = []
for _ in range(32):
nonce.append(random.choice(string.ascii_letters + string.digits))
2023-09-09 09:38:22 +02:00
sendCesium.nonce = base64.b64decode("".join(nonce))
2023-09-09 09:38:22 +02:00
finalDoc = sendCesium.configDoc(
sendCesium.encryptMsg(title), sendCesium.encryptMsg(msg)
) # Configure JSON document to send
sendCesium.sendDocument(finalDoc, outbox) # Send final signed document
def delete(self, idsMsgList, outbox):
2023-09-09 09:38:22 +02:00
deleteCesium = DeleteFromCesium(self.dunikey, self.pod)
# deleteCesium.issuer = recipient
for idMsg in idsMsgList:
finalDoc = deleteCesium.configDoc(idMsg, outbox)
deleteCesium.sendDocument(finalDoc, idMsg)
2020-12-07 16:42:22 +01:00
#################### Profiles ####################
2023-09-09 09:38:22 +02:00
def set(
self,
name=None,
description=None,
ville=None,
adresse=None,
position=None,
site=None,
avatar=None,
):
setProfile = Profiles(self.dunikey, self.pod)
document = setProfile.configDocSet(
name, description, ville, adresse, position, site, avatar
)
result = setProfile.sendDocument(document, "set")
2020-12-07 16:42:22 +01:00
print(result)
return result
2023-09-09 09:38:22 +02:00
2020-12-07 16:42:22 +01:00
def get(self, profile=None, avatar=None):
2023-09-09 09:38:22 +02:00
getProfile = Profiles(self.dunikey, self.pod, self.noNeedDunikey)
2020-12-07 16:42:22 +01:00
if not profile:
profile = self.pubkey
if not re.match(PUBKEY_REGEX, profile) or len(profile) > 45:
2023-09-09 09:38:22 +02:00
scope = "title"
2020-12-07 16:42:22 +01:00
else:
2023-09-09 09:38:22 +02:00
scope = "_id"
2020-12-07 16:42:22 +01:00
document = getProfile.configDocGet(profile, scope, avatar)
2023-09-09 09:38:22 +02:00
resultJSON = getProfile.sendDocument(document, "get")
2020-12-07 16:42:22 +01:00
result = getProfile.parseJSON(resultJSON)
print(result)
2023-09-09 09:38:22 +02:00
2022-10-23 03:31:27 +02:00
def getPage(self, page=None, avatar=None):
2023-09-09 09:38:22 +02:00
getPage = Pages(self.dunikey, self.pod, self.noNeedDunikey)
2022-10-23 03:31:27 +02:00
if not page:
page = self.pubkey
if not re.match(PUBKEY_REGEX, page) or len(page) > 45:
2023-09-09 09:38:22 +02:00
scope = "title"
2022-10-23 03:31:27 +02:00
else:
2023-09-09 09:38:22 +02:00
scope = "_id"
2022-10-23 03:31:27 +02:00
document = getPage.configDocGet(page, scope, avatar)
2023-09-09 09:38:22 +02:00
resultJSON = getPage.sendDocument(document, "get")
2022-10-23 03:31:27 +02:00
result = getPage.parseJSON(resultJSON)
print(result)
2020-12-07 16:42:22 +01:00
def erase(self):
2023-09-09 09:38:22 +02:00
eraseProfile = Profiles(self.dunikey, self.pod)
2020-12-07 16:42:22 +01:00
document = eraseProfile.configDocErase()
2023-09-09 09:38:22 +02:00
result = eraseProfile.sendDocument(document, "erase")
2020-12-07 16:42:22 +01:00
print(result)
2023-09-09 09:38:22 +02:00
def geolocProfiles(self, node):
geolocProfiles = GeolocProfiles(self.dunikey, self.pod)
cesiumProfiles = geolocProfiles.getCesiumProfiles()
gvaProfiles = geolocProfiles.getGVAProfiles(node)
result = geolocProfiles.formatProfiles(cesiumProfiles, json.loads(gvaProfiles))
2023-09-09 22:35:35 +02:00
print(json.dumps(result))
2023-09-09 09:38:22 +02:00
2020-12-07 16:42:22 +01:00
#################### Likes ####################
def readLikes(self, profile=False):
2023-09-09 09:38:22 +02:00
likes = ReadLikes(self.dunikey, self.pod, self.noNeedDunikey)
2020-12-07 16:42:22 +01:00
document = likes.configDoc(profile)
result = likes.sendDocument(document)
result = likes.parseResult(result)
print(result)
def like(self, stars, profile=False):
2023-09-09 09:38:22 +02:00
likes = SendLikes(self.dunikey, self.pod)
2020-12-07 16:42:22 +01:00
document = likes.configDoc(profile, stars)
if document:
likes.sendDocument(document, profile)
def unLike(self, pubkey, silent=False):
2023-09-09 09:38:22 +02:00
likes = UnLikes(self.dunikey, self.pod)
2020-12-07 16:42:22 +01:00
idLike = likes.checkLike(pubkey)
if idLike:
document = likes.configDoc(idLike)
likes.sendDocument(document, silent)
2021-02-14 18:18:01 +01:00
#################### Offer ####################
2023-09-09 09:38:22 +02:00
def setOffer(
self,
title=None,
description=None,
city=None,
2023-09-10 09:44:52 +02:00
location=None,
2023-09-09 09:38:22 +02:00
category=None,
price=None,
picture=None,
):
setOffer = Offers(self.dunikey, self.pod)
document = setOffer.configDocSet(
2023-09-10 09:44:52 +02:00
title, description, city, location, category, price, picture
2023-09-09 09:38:22 +02:00
)
result = setOffer.sendDocumentSet(document, "set")
2021-02-14 18:18:01 +01:00
# print(result)
2021-02-14 18:18:01 +01:00
return result
2023-09-09 09:38:22 +02:00
2021-02-14 18:18:01 +01:00
def getOffer(self, id, avatar=None):
2023-09-09 09:38:22 +02:00
getOffer = Offers(self.dunikey, self.pod, self.noNeedDunikey)
resultJSON = getOffer.sendDocumentGet(id, "get")
# print(resultJSON)
2021-02-14 18:18:01 +01:00
result = getOffer.parseJSON(resultJSON)
print(result)
def deleteOffer(self, id):
2023-09-09 09:38:22 +02:00
eraseOffer = Offers(self.dunikey, self.pod)
2021-02-14 18:18:01 +01:00
document = eraseOffer.configDocErase(id)
2023-09-09 09:38:22 +02:00
result = eraseOffer.sendDocumentSet(document, "delete", id)
2021-02-14 18:18:01 +01:00
print(result)