Ejemplo n.º 1
0
    def CreateFile(self, vault):
        """Create a file

        :param vault: vault to create the file in
        :returns: create an object for the new file and adds it to the vault
                  and then return the name of the file within the vault
        """
        url = api_v1.get_files_path(vault.vault_id)
        self.ReInit(self.sslenabled, url)
        self.__update_headers()
        self.__log_request_data(fn='Create File')
        res = requests.post(self.Uri, headers=self.Headers)
        self.__log_response_data(res, jsondata=False, fn='Create File')
        if res.status_code == 201:
            new_file = api_file.File(project_id=self.project_id,
                                     vault_id=vault.vault_id,
                                     file_id=res.headers['x-file-id'],
                                     url=res.headers['location'])
            vault.files[new_file.file_id] = new_file
            return new_file.file_id
        else:
            raise RuntimeError(
                'Failed to Create File. '
                'Error ({0:}): {1:}'.format(res.status_code, res.text))
Ejemplo n.º 2
0
    def ListFiles(self, vault, marker=None, limit=None):
        """List files in the Vault

        :param vault: vault to list the files from
        :param marker: fileid within the list to start at
        :param limit: the maximum number of entries to retrieve
        :returns: a list of file ids in the vault
        """
        url = api_v1.get_files_path(vault.vault_id)

        query_args = {}

        if marker and limit:
            query_args = {
                'marker': marker,
                'limit': limit,
            }

        elif marker:
            query_args = {
                'marker': marker
            }
        elif limit:
            query_args = {
                'limit': limit
            }
        else:
            pass

        ret_url = set_qs_on_url(url, query_args)
        self.ReInit(self.sslenabled, ret_url)
        self.__update_headers()
        self.__log_request_data(fn='List Files')
        res = requests.get(self.Uri, headers=self.Headers)
        self.__log_response_data(res, jsondata=True, fn='List Files')

        if res.status_code == 200:
            if 'x-next-batch' in res.headers:
                parsed_url = urlparse(res.headers['x-next-batch'])

                qs = parse_qs(parsed_url[4])
                vault.files.marker = qs['marker'][0]
            else:
                vault.files.marker = None

            return_list = []
            for file_id in res.json():
                return_list.append(file_id)

                file_uri = api_v1.get_file_path(vault.vault_id, file_id)
                self.ReInit(self.sslenabled, url)
                file_url = self.Uri

                kw = {
                    'project_id': self.project_id,
                    'vault_id': vault.vault_id,
                    'file_id': file_id,
                    'url': file_url
                }
                vault.files[file_id] = api_file.File(**kw)

            return return_list

        else:
            raise RuntimeError(
                'Failed to List Files in the Vault. '
                'Error ({0:}): {1:}'.format(res.status_code, res.text))