import ElementTree import urequests from urequests import auth import gc import uos class uNextcloud: class File: def __init__(self, url_path, mimetype): self.url_path = url_path self.mimetype = mimetype def get_url(self): return self.url_path def get_mimetype(self): return self.mimetype def __init__(self, nextcloud_url): self.url = nextcloud_url self.username = None self.password = None def set_auth(self, username, password): self.username = username self.password = password def get_folder_items(self, folder_path=""): response = urequests.request("PROPFIND", self.url+"/remote.php/dav/files/"+self.username+"/"+folder_path, auth=urequests.auth.HTTPBasicAuth(self.username, self.password)) if 200 <= response.status_code < 300: file_list = [] try: xml = ElementTree.fromstring(response.text) for resp in xml: href = resp.find_first_by_tag("href") propstat = resp.find_first_by_tag("propstat") prop = propstat.find_first_by_tag("prop") content_type = prop.find_first_by_tag("getcontenttype") if content_type != None: file_list.append(self.File(href.text, content_type.text)) return file_list except AttributeError: return None else: return None def download_file_to_path(self, folder_path, file, destination_path): pass