コード例 #1
0
    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
            }
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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