Požadavek file-system
Účel a dopady
Obálka pro dávku souborových operací nad souborovým systémem serveru: výpis (list), výmaz (delete), kopírování (copy), přesun (move) a založení adresáře (mkdir). Dopad závisí na konkrétní dílčí operaci – list jen čte, ostatní mění obsah souborového systému.
Dostupnost, kontext, oprávnění apod.
Všechny operace vyžadují r_admin – dosavadní dokumentace toto omezení vůbec neuváděla.
XML požadavek (syntax + popis)
<request>
<file-system
transactional="{string}"
name="none|single|all|complex"
>
<list ... /> *
<delete ... /> *
<copy ... /> *
<move ... /> *
<mkdir ... /> *
</file-system>
</request>
Parametry a pravidla (atributy, potomci)
Zjištěná chyba serveru – atribut transactional
Server nejprve testuje přítomnost atributu transactional, ale jeho hodnotu pak čte z atributu name. V praxi to znamená: pouhé transactional="single" transakční režim nezapne – aby k zapnutí došlo, musí být zároveň přítomen i atribut name s hodnotou single/all/complex, a to bez ohledu na to, co je v samotném transactional. Bez rozpoznané kombinace zůstává chování netransakční (none).
transactional- Přítomnost aktivuje čtení transakčního režimu (viz chyba výše); vlastní hodnota se nečte. (typ:string; nepovinný)name- Skutečný nositel hodnoty transakčního režimu kvůli chybě výše. (typ:enum; povolené hodnoty:single,all,complex; nepovinný) –single: každá operace ve vlastní transakci;all: celá dávka jako jedna transakce;complex: součást širší transakce celého požadavku.
Potomci: libovolná kombinace a počet list/delete/copy/move/mkdir, zpracovávají se v pořadí výskytu.
Odebráno: uzel rename uváděný dosavadní dokumentací je v aktuální verzi serveru zakomentovaný a nikdy se nevykoná – odeslání <rename> skončí jako status="error" detail="Neznama operace nebo chybi cil".
Společné atributy list/delete/copy/move/mkdir
path- Zdrojová cesta (virtuální adresář nebo relativní cesta); chybí-li, operace selže jako"Neplatna cesta". (typ:string; povinný)recurse- Rekurzivní zpracování podadresářů. (typ:bool; nepovinný; výchozí:false)files- Zpracovávat soubory. (typ:bool; nepovinný; výchozí:true)dirs- Zpracovávat adresáře. (typ:bool; nepovinný; výchozí:trueprolist, jinakfalse)older-than,newer-than- Filtr podle data poslední změny. (typ:datetime; nepovinné)larger-than,smaller-than- Filtr podle velikosti v bajtech. (typ:number; nepovinné)dirs-by-time-check- Aplikovat časový filtr i na adresáře. (typ:bool; nepovinný; výchozí:false)regex- Regulární výraz pro výběr položek. (typ:string; nepovinný) – dosavadní dokumentace uvádělaregexp, ve skutečnosti se čteregex.
delete/move navíc
del-previously-empty-dirs- Mazat i dříve prázdné nadřazené adresáře. (typ:bool; nepovinný; výchozí:false) – omezení serveru: hodnota"true"nemá zjistitelný efekt.del-root-dir- Smazat i samotný kořenový adresářpath. (typ:bool; nepovinný; výchozí:false)error-if-not-empty- Neprázdný adresář je chybou. (typ:bool; nepovinný; výchozí:true) – v dosavadní dokumentaci zcela chyběl.
copy/move navíc
target- Cílová cesta; chybí-li, operace selže jako"Neznama operace nebo chybi cil". (typ:string; povinný)overwrite- Přepisování existujících cílů. (typ:enum; nepovinný; výchozí:always; povolené hodnoty:skip-existing,older,newer,always; jakákoli jiná hodnota se chová jako „nikdy nepřepisovat“) – hodnotafailuváděná ve starší dokumentaci se chová stejně jako neznámá hodnota.
mkdir
Jen path a recurse ze společných atributů výše.
Příklady požadavku
(Zatím bez ověřeného příkladu.)
Zpracování a vedlejší účinky
- V režimu
name="single"má každá operace vlastní transakci; vname="all"se celá dávka odvolá, pokud jakákoli operace selže;name="complex"napojuje operace na širší transakci celého požadavku (viz obálka požadavku). - Cesty procházejí
resolveVirt(virtuální adresáře); mimo nakonfigurované úložiště nejsou přístupné cesty s...
XML odpověď (syntax + popis)
<response>
<file-system>
<list status="ok|error" count="{number}" detail="{string}"></list> *
<delete status="ok|error" count="{number}" detail="{string}"></delete> *
<copy status="ok|error" count="{number}" detail="{string}"></copy> *
<move status="ok|error" count="{number}" detail="{string}"></move> *
<mkdir status="ok|error" count="{number}" detail="{string}"></mkdir> *
</file-system>
</response>
Každý potomek odpovídá jedné operaci požadavku ve stejném pořadí; count je přítomen jen při status="ok", detail jen při status="error". Uzly nejsou nikdy sebeuzavírající (i bez obsahu mají vždy otevírací a uzavírací značku).
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
status="error" detail="Nemate patricna opravneni"– volající nemár_admin(per-operace, stejná chyba pro každou operaci v dávce).status="error" detail="Neplatna cesta"– chybí/neplatnýpath.status="error" detail="Neznama operace nebo chybi cil"– chybítargetucopy/move, nebo neznámý název uzlu (vč.rename).status="error" detail="Cesta nebyla nalezena"–list/copy/movena neexistující zdrojovou cestu.status="error" detail="Cil se nepodarilo smazat"/"Pri vymazu nastala chyba"–delete.status="error" detail="Adresar se nepodarilo zalozit"–mkdir.status="error" detail="Pri kopirovani/presunu adresarove struktury nastala chyba"–copy/move.status="error" detail="Transakci se nepodarilo zahajit"– transakční režimsingle/all, selhání zahájení transakce.- V režimu
all/complexselhání jedné operace přeskočí (status="error" detail="Transakce byla preskocena") zpracování zbylých operací v dávce.
Související požadavky
- save-file, save-files, load-files – práce s obsahem jednotlivých souborů.