import json import re, string, random, base64 from lib.cesiumCommon import CesiumCommon, PUBKEY_REGEX from lib.geolocProfiles import GeolocProfiles from lib.getPages import Pages from lib.messaging import ReadFromCesium, SendToCesium, DeleteFromCesium from lib.profiles import Profiles from lib.stars import ReadLikes, SendLikes, UnLikes from lib.offers import Offers class CesiumPlus(CesiumCommon): #################### Messaging #################### def read(self, nbrMsg, isJSON, outbox): 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 nonce = [] for _ in range(32): nonce.append(random.choice(string.ascii_letters + string.digits)) sendCesium.nonce = base64.b64decode("".join(nonce)) 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): deleteCesium = DeleteFromCesium(self.dunikey, self.pod) # deleteCesium.issuer = recipient for idMsg in idsMsgList: finalDoc = deleteCesium.configDoc(idMsg, outbox) deleteCesium.sendDocument(finalDoc, idMsg) #################### Profiles #################### 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") print(result) return result def get(self, profile=None, avatar=None): getProfile = Profiles(self.dunikey, self.pod, self.noNeedDunikey) if not profile: profile = self.pubkey if not re.match(PUBKEY_REGEX, profile) or len(profile) > 45: scope = "title" else: scope = "_id" document = getProfile.configDocGet(profile, scope, avatar) resultJSON = getProfile.sendDocument(document, "get") result = getProfile.parseJSON(resultJSON) print(result) def getPage(self, page=None, avatar=None): getPage = Pages(self.dunikey, self.pod, self.noNeedDunikey) if not page: page = self.pubkey if not re.match(PUBKEY_REGEX, page) or len(page) > 45: scope = "title" else: scope = "_id" document = getPage.configDocGet(page, scope, avatar) resultJSON = getPage.sendDocument(document, "get") result = getPage.parseJSON(resultJSON) print(result) def erase(self): eraseProfile = Profiles(self.dunikey, self.pod) document = eraseProfile.configDocErase() result = eraseProfile.sendDocument(document, "erase") print(result) def geolocProfiles(self, node): geolocProfiles = GeolocProfiles(self.dunikey, self.pod) cesiumProfiles = geolocProfiles.getCesiumProfiles() gvaProfiles = geolocProfiles.getGVAProfiles(node) result = geolocProfiles.formatProfiles(cesiumProfiles, json.loads(gvaProfiles)) print(json.dumps(result)) #################### 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) #################### Offer #################### def setOffer( self, title=None, description=None, city=None, location=None, category=None, price=None, picture=None, ): setOffer = Offers(self.dunikey, self.pod) document = setOffer.configDocSet( title, description, city, location, category, price, picture ) result = setOffer.sendDocumentSet(document, "set") # print(result) return result def getOffer(self, id, avatar=None): getOffer = Offers(self.dunikey, self.pod, self.noNeedDunikey) resultJSON = getOffer.sendDocumentGet(id, "get") # print(resultJSON) 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)