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))
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))