From 9e75ca92049937a16dedafb782f9c7a3f3cda98a Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Mon, 16 Sep 2024 17:03:26 +0200 Subject: [PATCH 1/5] Formatting from pre-commit hooks Signed-off-by: Scott Williams --- nc_py_api/files/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nc_py_api/files/__init__.py b/nc_py_api/files/__init__.py index 75d3d58c..2792b663 100644 --- a/nc_py_api/files/__init__.py +++ b/nc_py_api/files/__init__.py @@ -5,12 +5,18 @@ import email.utils import enum import os +import re import warnings from pydantic import BaseModel from .. import _misc +user_regex = re.compile(r".*?files/([^/]+)/") +"""Regex for evaluating user from path string; instantiated once on import.""" +user_path_regex = re.compile(r"files/([^/]+)/") +"""Regex for evaluating user path from oath string; instantiated once on import.""" + class LockType(enum.IntEnum): """Nextcloud File Locks types.""" @@ -218,12 +224,12 @@ def name(self) -> str: @property def user(self) -> str: """Returns user ID extracted from the `full_path`.""" - return self.full_path.lstrip("/").split("/", maxsplit=2)[1] + return user_regex.findall(self.full_path)[0] @property def user_path(self) -> str: """Returns path relative to the user's root directory.""" - return self.full_path.lstrip("/").split("/", maxsplit=2)[-1] + return user_path_regex.sub("", self.full_path, count=1) @property def is_shared(self) -> bool: From 19ad045d1fa4350d87f69af0f93eabad773be467 Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Mon, 16 Sep 2024 17:14:36 +0200 Subject: [PATCH 2/5] Fix comment typo and give more specific comment. Signed-off-by: Scott Williams --- nc_py_api/files/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nc_py_api/files/__init__.py b/nc_py_api/files/__init__.py index 2792b663..5f348544 100644 --- a/nc_py_api/files/__init__.py +++ b/nc_py_api/files/__init__.py @@ -13,9 +13,9 @@ from .. import _misc user_regex = re.compile(r".*?files/([^/]+)/") -"""Regex for evaluating user from path string; instantiated once on import.""" +"""Regex for evaluating user from full path string; instantiated once on import.""" user_path_regex = re.compile(r"files/([^/]+)/") -"""Regex for evaluating user path from oath string; instantiated once on import.""" +"""Regex for evaluating user path from full path string; instantiated once on import.""" class LockType(enum.IntEnum): From 8a89d93ab1c99e5e18941f9d0865bc53e56cfabe Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Mon, 16 Sep 2024 18:10:12 +0200 Subject: [PATCH 3/5] Add wildcard to the correct regex and remove it from the one that doesn't need it Signed-off-by: Scott Williams --- nc_py_api/files/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nc_py_api/files/__init__.py b/nc_py_api/files/__init__.py index 5f348544..d82e52cf 100644 --- a/nc_py_api/files/__init__.py +++ b/nc_py_api/files/__init__.py @@ -12,9 +12,9 @@ from .. import _misc -user_regex = re.compile(r".*?files/([^/]+)/") +user_regex = re.compile(r"files/([^/]+)/") """Regex for evaluating user from full path string; instantiated once on import.""" -user_path_regex = re.compile(r"files/([^/]+)/") +user_path_regex = re.compile(r".*?files/([^/]+)/") """Regex for evaluating user path from full path string; instantiated once on import.""" From 91940c47ae82cceeca0e657389fd23418f5fcdb7 Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Tue, 17 Sep 2024 11:31:58 +0200 Subject: [PATCH 4/5] Update regex for trashbin and versions paths. Signed-off-by: Scott Williams --- nc_py_api/files/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nc_py_api/files/__init__.py b/nc_py_api/files/__init__.py index d82e52cf..999ed372 100644 --- a/nc_py_api/files/__init__.py +++ b/nc_py_api/files/__init__.py @@ -12,9 +12,9 @@ from .. import _misc -user_regex = re.compile(r"files/([^/]+)/") +user_regex = re.compile(r"(?:files|trashbin|versions)/([^/]+)/") """Regex for evaluating user from full path string; instantiated once on import.""" -user_path_regex = re.compile(r".*?files/([^/]+)/") +user_path_regex = re.compile(r".*?(files|trashbini|versions)/([^/]+)/") """Regex for evaluating user path from full path string; instantiated once on import.""" From 986fa1f49bb83135d38204e7458ac6e95c21dc9c Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Tue, 17 Sep 2024 12:05:40 +0200 Subject: [PATCH 5/5] Fix for a vim artifact typo. Signed-off-by: Scott Williams --- nc_py_api/files/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nc_py_api/files/__init__.py b/nc_py_api/files/__init__.py index 999ed372..ce8f3c19 100644 --- a/nc_py_api/files/__init__.py +++ b/nc_py_api/files/__init__.py @@ -14,7 +14,7 @@ user_regex = re.compile(r"(?:files|trashbin|versions)/([^/]+)/") """Regex for evaluating user from full path string; instantiated once on import.""" -user_path_regex = re.compile(r".*?(files|trashbini|versions)/([^/]+)/") +user_path_regex = re.compile(r".*?(files|trashbin|versions)/([^/]+)/") """Regex for evaluating user path from full path string; instantiated once on import."""