Skip to content

Commit cd55250

Browse files
author
Piotr Slupski
committed
Add getconfigsetting support
1 parent 2faf3b8 commit cd55250

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

filecloudapi/datastructures.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,59 @@ def _set_entries(self, response: Element):
278278
self.entries.append(an_entry)
279279

280280

281+
class PolicyList:
282+
"""Convienience class represents policy list"""
283+
284+
entries: list[PolicyEntry] = []
285+
286+
def first(self) -> PolicyEntry | None:
287+
if len(self.entries) >= 1:
288+
return self.entries[0]
289+
return None
290+
291+
def __iter__(self):
292+
return iter(self.entries)
293+
294+
def __init__(self, a_response: Element):
295+
""""""
296+
self._set_entries(response=a_response)
297+
298+
def _set_entries(self, response: Element):
299+
a_list = list(response)
300+
301+
for elem in a_list:
302+
if elem.tag != "policy":
303+
continue
304+
305+
an_entry = PolicyEntry(
306+
policyid=list(elem)[0].text, # type:ignore
307+
policyname=list(elem)[1].text, # type:ignore
308+
)
309+
self.entries.append(an_entry)
310+
311+
312+
class ServerSettings:
313+
"""Convienience class represents server settings"""
314+
315+
entries: dict = {}
316+
317+
def __iter__(self):
318+
return iter(self.entries)
319+
320+
def __init__(self, a_response: Element):
321+
""""""
322+
self._set_entries(response=a_response)
323+
324+
def _set_entries(self, response: Element):
325+
a_list = list(response)
326+
327+
for elem in a_list:
328+
if elem.tag != "setting":
329+
continue
330+
331+
self.entries[elem.get("param")] = elem.get("value")
332+
333+
281334
@dataclass
282335
class StorageRootDetails:
283336
type: str

filecloudapi/fcserver.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
SyncFolder,
4141
TeamFolderInfo,
4242
UserStatus,
43+
ServerSettings,
4344
)
4445
from .exceptions import ServerError
4546

@@ -1566,6 +1567,34 @@ def admin_resetpolicyforuser(self, username: str) -> None:
15661567

15671568
self._raise_exception_from_command(resp)
15681569

1570+
def get_config_settings(self, config: list[str]) -> None:
1571+
"""
1572+
Retrieve Filecloud configuration settings. The config list should
1573+
contain FC configuration keys.
1574+
Args:
1575+
config: Dictionary containing FC config keys and values
1576+
"""
1577+
try:
1578+
count = len(config)
1579+
except (ValueError, TypeError):
1580+
count = 0
1581+
1582+
config_opts = []
1583+
for i in range(count):
1584+
param_key = f"param{i}"
1585+
config_opts[param_key] = config[i]
1586+
1587+
resp = self._api_call(
1588+
"/admin/setconfigsetting",
1589+
{
1590+
"count": str(len(config_opts)),
1591+
**{f"param{i}": value for i, value in enumerate(config_opts)},
1592+
},
1593+
)
1594+
1595+
settings = ServerSettings(resp)
1596+
return settings
1597+
15691598
def set_config_setting(self, config_name: str, config_val: str) -> None:
15701599
"""
15711600
Sets a server config setting via admin

0 commit comments

Comments
 (0)