Asi nejvýznamnější vlastností této technologie je možnost ukládání informací příslušejícím k jednotlivým zdrojům umístěných na serveru. WebDAV sice definuje standardní vlastnosti, ale nic nám nebrání v tom, abychom si vytvořili vlastní. V tomto článku se tedy budeme věnovat příkazům PROPPATCH a PROPFIND a práci s vlastnostmi.

Pokud budete implementovat podporu WebDAVu do svého serveru, mělo by vás zajímat, že WebDAV rozděluje vlastnosti do dvou skupin, na mrtvé (Dead Properties) a živé (Live Properties). Hodnotu živých vlastností určuje server (například velikost souboru a datum vytvoření), kdežto hodnotu mrtvých vlastností určuje pouze uživatel a server ji nesmí nijak modifikovat. Z pohledu uživatele nebude pro nás toto rozdělení příliš důležité.

Názvy vlastností tvoří vždy názvy elementů, zatímco hodnota vlastnosti je obsahem příslušného elementu. Následující tabulka obsahuje seznam standardně používaných vlastností.

Element Popis
creationdate datum a čas vytvoření zdroje (např.: 2003-04-14T14:34:39Z)
displayname název zdroje
getcontentlength velikost zdroje v bytech
getcontenttype MIME typ zdroje
getlastmodified datum a čas poslední úpravy zdroje (např.: Mon, 11 Mar 2002 09:55:20 GMT)
lockdiscrovery popisuje aktivní zámky na zdroji
source obsahuje element(y) link, které popisují odkazy mezi soubory. Více viz první příklad.
supportedlock poskytuje informace o tom, jaké zámky a vlastnosti zámků zdroj podporuje (více v příštím článku věnovaném zámkům)

PROPPATCH

Příkaz PROPPATCH slouží k vytvoření, úpravě či odstranění vlastností, spojených se specifikovaným zdrojem. Uživatel musí požadovanou akci specifikovat v XML části dotazu, jehož kořenovým elementem musí být element propertyupdate. K úpravě nebo přidání nové vlastnosti se používá element set a k odstranění vlastnosti použijeme element remove.

V rámci elementů remove a set jsou vlastnosti definovány elementem prop. V druhém příkladě požadujeme po serveru, aby přidal k souboru smlouva.pdf vlastnosti Autor a Popis, které jsme si definovali v DTD umístěném na adrese www.muj-webdav.cz/standards/dtd-one. Zároveň chceme, aby server smazal již dříve uloženou vlastnost Pocasi.

V přijaté odpovědi se objevil nový element propstat. Obsahem tohoto elementu jsou názvy vlastností (seskupeny v elementu prop) a stavový kód HTTP příslušející provedené operaci. V našem případě je jeden element propstat odpovídající přidání vlastností a druhý element pro odebrání vlastnosti Pocasi.

Pokud příkaz PROPPATCH proběhl v pořádku, pak je vrácen jako hodnota elementu status stavový kód 200 (OK). Pokud server neuspěl, vrátí odpovídající stavový kód, označující podstatu chyby. Podrobnosti o stavových kódech najdete jako vždy ve specifikaci WebDAVu a HTTP.

PROPFIND

Příkaz PROPFIND zprostředkovává zobrazení vlastností spojených se souborem. XML dokument specifikující tento příkaz je velmi důležitý, protože jeho obsah významně mění chování serveru při odeslání příkazu PROPFIND.

Kořenovým elementem musí být element propfind, jehož obsahem může být jedna z následující možností:

V prvním případě server vrátí názvy a hodnoty všech vlastností. Pokud zašleme v XML dokumentu element propname, pak server odešle pouze názvy vlastností připojených k souboru. Pokud použijeme třetí způsob, pak server vrátí názvy a hodnoty vybraných vlastností. Znění dotazu a chování serveru si můžete prohlédnout v připojených příkladech.

Hlavička Depth

Poprvé (ale určitě ne naposledy) se v článcích o WebDAVu setkáváme s HTTP hlavičkou Depth (hloubka). Tu využijeme, pokud budeme aplikovat některé příkazy na kolekci. Hlavička Depth může nabývat hodnot 0,1 nebo Infinity (nekonečno). Pokud hlavičku odešleme s hodnotou nula, pak bude příkaz aplikován pouze na zdroj (například se zkopíruje jen název kolekce a její vlastnosti). Pokud hodnota hlavičky bude jedna, pak bude příkaz aplikován jak na zdroj, tak na přímé potomky (kromě názvu kolekce se zkopírují i v ní obsažené soubory). V případě hodnoty Infinity, budou příkazem ovlivněni všichni potomci zdroje (zkopíruje se název kolekce, všechny podadresáře a soubory).

S příkazem PROPFIND lze použít hlavičku Depth s hodnotou 0 nebo 1. V prvním případě server vrátí pouze vlastnosti kolekce a v druhém případě i vlastnosti souborů v ní obsažených.

Odkazy, zdroje

Žádný příspěvek v diskuzi

Odpovědět