55
66from ._session import NcSessionBasic
77from .constants import APP_V2_BASIC_URL
8+ from .exceptions import NextcloudExceptionNotFound
89from .misc import require_capabilities
910
1011
@@ -19,28 +20,50 @@ class BasicAppCfgPref:
1920 def __init__ (self , session : NcSessionBasic ):
2021 self ._session = session
2122
22- def get_value (self , key : str ) -> Optional [str ]:
23+ def get_value (self , key : str , default = None ) -> Optional [str ]:
24+ if not key :
25+ raise ValueError ("`key` parameter can not be empty" )
2326 require_capabilities ("app_ecosystem_v2" , self ._session .capabilities )
24- r = self .get_values ([key ])
25- if r :
26- return r [0 ]["configvalue" ]
27- return None
27+ try :
28+ r = self .get_values ([key ])
29+ if r :
30+ return r [0 ]["configvalue" ]
31+ except NextcloudExceptionNotFound :
32+ pass
33+ return default
2834
2935 def get_values (self , keys : list [str ]) -> list [AppCfgPrefRecord ]:
36+ if not keys :
37+ return []
38+ if not all (keys ):
39+ raise ValueError ("`key` parameter can not be empty" )
3040 require_capabilities ("app_ecosystem_v2" , self ._session .capabilities )
3141 data = {"configKeys" : keys }
32- return self ._session .ocs (method = "POST" , path = f"{ APP_V2_BASIC_URL } /{ self .url_suffix } /get-values" , json = data )
42+ try :
43+ return self ._session .ocs (method = "POST" , path = f"{ APP_V2_BASIC_URL } /{ self .url_suffix } /get-values" , json = data )
44+ except NextcloudExceptionNotFound :
45+ return []
3346
3447 def set (self , key : str , value : str ) -> None :
48+ if not key :
49+ raise ValueError ("`key` parameter can not be empty" )
3550 require_capabilities ("app_ecosystem_v2" , self ._session .capabilities )
3651 params = {"configKey" : key , "configValue" : value }
3752 self ._session .ocs (method = "POST" , path = f"{ APP_V2_BASIC_URL } /{ self .url_suffix } " , json = params )
3853
39- def delete (self , keys : Union [str , list [str ]]) -> None :
40- require_capabilities ("app_ecosystem_v2" , self ._session .capabilities )
54+ def delete (self , keys : Union [str , list [str ]], not_fail = True ) -> None :
4155 if isinstance (keys , str ):
4256 keys = [keys ]
43- self ._session .ocs (method = "DELETE" , path = f"{ APP_V2_BASIC_URL } /{ self .url_suffix } " , json = {"configKeys" : keys })
57+ if not keys :
58+ return
59+ if not all (keys ):
60+ raise ValueError ("`key` parameter can not be empty" )
61+ require_capabilities ("app_ecosystem_v2" , self ._session .capabilities )
62+ try :
63+ self ._session .ocs (method = "DELETE" , path = f"{ APP_V2_BASIC_URL } /{ self .url_suffix } " , json = {"configKeys" : keys })
64+ except NextcloudExceptionNotFound as e :
65+ if not not_fail :
66+ raise e from None
4467
4568
4669class PreferencesExAPI (BasicAppCfgPref ):
0 commit comments