def createMetadata(self, folder): dictionary = self.createMetadatakeyAndKeystring(folder=folder) requestBody = dict() requestBody["timestamp"] = Helper.GetUnixMilliseconds() requestBody["metadataKey"] = dictionary["metadataKey"] rawPayload = Helper.GetJson(requestBody) payload = self.signPayloadDict(rawPayload) payloadJson = Helper.GetJson(payload) with requests.Session() as s: response = s.post(self._baseUrl + "metadata/create", data=payloadJson) if response.status_code == 403: print( "The folder: {} already exists! -> Will use that folder instead" .format(folder)) return { "metadataKey": dictionary["metadataKey"], "addFolder": False } else: # set empty foldermetadata newfolderMetadata = FolderMetaData() newfolderMetadata.name = os.path.basename(folder) newfolderMetadata.created = Helper.GetUnixMilliseconds() newfolderMetadata.modified = Helper.GetUnixMilliseconds() dictionary["metadata"] = newfolderMetadata self.setMetadata(dictionary) return { "metadataKey": dictionary["metadataKey"], "addFolder": True }
def setMetadata(self, metadata): keyString = metadata["keyString"] folderMetaDataString = metadata["metadata"].toString() encryptedFolderMetaData = AesGcm256.encryptString( folderMetaDataString, bytearray.fromhex(keyString)) encryptedFolderMetaDataBase64 = base64.b64encode( encryptedFolderMetaData).decode("utf-8") AesGcm256.decrypt(encryptedFolderMetaData, bytearray.fromhex(keyString)) metaReqDict = { "timestamp": Helper.GetUnixMilliseconds(), "metadataKey": metadata["metadataKey"], "metadata": encryptedFolderMetaDataBase64 } metaReqDictJson = Helper.GetJson(metaReqDict) payload = self.signPayloadDict(metaReqDictJson) payloadJson = Helper.GetJson(payload) with requests.Session() as s: response = s.post(self._baseUrl + "metadata/set", data=payloadJson) folderMetaData = self.decryptMetaData(response, keyString) metadata["metadata"] = folderMetaData return metadata
def GetFolderMetaData(self, metaDataKey, keyString): timestamp = Helper.GetUnixMilliseconds() payload = dict({"timestamp": timestamp, "metadataKey": metaDataKey}) payloadJson = Helper.GetJson(payload) payloadMeta = self.signPayloadDict(payloadJson) payloadMetaJson = Helper.GetJson(payloadMeta) with requests.Session() as s: response = s.post(self._baseUrl + "metadata/get", data=payloadMetaJson) resultMetaDataEncrypted = response.content.decode("utf-8") resultMetaDataEncryptedJson = json.loads(resultMetaDataEncrypted) stringbytes = bytes(resultMetaDataEncryptedJson["metadata"], "utf-8") stringDecoded = base64.b64decode(stringbytes) decryptedMetaData = AesGcm256.decrypt(stringDecoded, bytearray.fromhex(keyString)) metaData = decryptedMetaData.decode("utf-8") metaData = json.loads(metaData) folderMetaData = FolderMetaData.ToObject(metaData) return folderMetaData
def deleteMetaData(self, handle): requestBody = dict() requestBody["timestamp"] = Helper.GetUnixMilliseconds() requestBody["metadataKey"] = handle rawPayload = Helper.GetJson(requestBody) payload = self.signPayloadDict(rawPayload) payloadJson = Helper.GetJson(payload) with requests.Session() as s: return s.post(self._baseUrl + "metadata/delete", data=payloadJson)
def checkAccountStatus(self): ''' fetches the Account data from opacity and returns an status object ''' requestBody = dict() requestBody["timestamp"] = Helper.GetUnixMilliseconds() rawPayload = Helper.GetJson(requestBody) payload = self.signPayloadDict(rawPayload) payloadJson = Helper.GetJson(payload) with requests.Session() as s: response = s.post(self._baseUrl + "account-data", data=payloadJson) if response.status_code == 404: raise AttributeError("The provided account handle is invalid!") else: accountData = response.content.decode("utf-8") return AccountStatus.ToObject(accountData)
def AddFileToFolderMetaData(self, folder, fileOrFolder, isFile=False, isFolder=False): metadata = self.getFolderData(folder=folder) keyString = metadata["keyString"] folderMetaData = metadata["metadata"] if isFile: folderMetaData.files.append(fileOrFolder) elif isFolder: folderMetaData.folders.append(fileOrFolder) else: raise EnvironmentError("neither file nor folder") ## clean out bug deleted files # folderMetaData.files = [temp for temp in folderMetaData.files if len(temp.versions)>0] folderMetaDataString = folderMetaData.toString() encryptedFolderMetaData = AesGcm256.encryptString( folderMetaDataString, bytearray.fromhex(keyString)) encryptedFolderMetaDataBase64 = base64.b64encode( encryptedFolderMetaData).decode("utf-8") AesGcm256.decrypt(encryptedFolderMetaData, bytearray.fromhex(keyString)) metaReqDict = { "timestamp": Helper.GetUnixMilliseconds(), "metadataKey": metadata["metadataKey"], "metadata": encryptedFolderMetaDataBase64 } metaReqDictJson = Helper.GetJson(metaReqDict) payload = self.signPayloadDict(metaReqDictJson) payloadJson = Helper.GetJson(payload) with requests.Session() as s: response = s.post(self._baseUrl + "metadata/set", data=payloadJson) return response