Содержимое папки
Чтобы получить список файлов и подпапок, укажите в запросе заголовок Depth со значением «1». Яндекс Диск вернет в ответе свойства папки, а также всех элементов, находящихся на первом уровне папки.
Перечень вложенных элементов можно получать постранично, задавая количество пропускаемых элементов (параметр offset) и нужное количество элементов на странице (параметр amount). Элементы считаются отсортированными по алфавиту, при этом все вложенные папки перечислены перед файлами.
Запрос всего содержимого папки
Приложение запрашивает свойства корневой папки Диска и непосредственно содержащихся в нем элементов:
PROPFIND / HTTP/1.1 Host: webdav.yandex.ru Accept: */* Depth: 1 Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07В ответе перечислены все содержащиеся в папке элементы и их свойства:
HTTP/1.1 207 Multi-Status Content-Type: application/xml; charset="utf-8" Content-Length: 3079 <?xml version="1.0" encoding="utf-8"?> <d:multistatus xmlns:d="DAV:"> <d:response> <d:href> / </d:href> <d:propstat> <d:status> HTTP/1.1 200 OK </d:status> <d:prop> <d:creationdate> 1970-01-01T00:00:00Z </d:creationdate> <d:displayname> disk </d:displayname> <d:getcontentlength> 0 </d:getcontentlength> <d:getlastmodified> Thu, 01 Jan 1970 00:00:00 GMT </d:getlastmodified> <d:resourcetype> <d:collection/> </d:resourcetype> </d:prop> </d:propstat> </d:response> <d:response> <d:href> /Documents/ </d:href> <d:propstat> <d:status> HTTP/1.1 200 OK </d:status> <d:prop> <d:creationdate> 2012-03-24T09:00:43Z </d:creationdate> <d:displayname> Documents </d:displayname> <d:getcontentlength> 0 </d:getcontentlength> <d:getlastmodified> Sat, 24 Mar 2012 09:00:43 GMT </d:getlastmodified> <d:resourcetype> <d:collection/> </d:resourcetype> </d:prop> </d:propstat> </d:response> <d:response> <d:href> /readme.pdf </d:href> <d:propstat> <d:status> HTTP/1.1 200 OK </d:status> <d:prop> <d:creationdate> 2012-04-09T10:56:13Z </d:creationdate> <d:displayname> readme.pdf </d:displayname> <d:getcontentlength> 455833 </d:getcontentlength> <d:getcontenttype> application/pdf </d:getcontenttype> <d:getlastmodified> Mon, 09 Apr 2012 10:56:13 GMT </d:getlastmodified> <d:resourcetype/> </d:prop> </d:propstat> </d:response> </d:multistatus>
Постраничный запрос содержимого папки
Каждая из предполагаемых страниц должна содержать по 3 элемента.
Чтобы запросить первую страницу, следует просто передать параметр amount со значением «3». Чтобы запросить вторую страницу, первые три элемента нужно пропустить: для этого следует также задать параметр offset со значением «3».
PROPFIND /Downloads/?offset=3&amount=3 HTTP/1.1 Host: webdav.yandex.ru Accept: */* Depth: 1 Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07В ответе указана запрошенная папка и три элемента — под номерами 4, 5 и 6:
HTTP/1.1 207 Multi-Status Content-Type: application/xml; charset="utf-8" Content-Length: 1737 <?xml version="1.0" encoding="utf-8"?> <d:multistatus xmlns:d="DAV:"> <d:response> <d:href>/Downloads/</d:href> <d:propstat> <d:status>HTTP/1.1 200 OK</d:status> <d:prop> <d:resourcetype> <d:collection/> </d:resourcetype> <d:getlastmodified>Wed, 04 Apr 2012 20:00:00 GMT</d:getlastmodified> <d:getcontentlength>0</d:getcontentlength> <d:displayname>Downloads</d:displayname> <d:creationdate>2012-04-04T20:00:00Z</d:creationdate> </d:prop> </d:propstat> </d:response> <d:response> <d:href>/Downloads/Soft/</d:href> <d:propstat> <d:status>HTTP/1.1 200 OK</d:status> <d:prop> <d:resourcetype> <d:collection/> </d:resourcetype> <d:getlastmodified>Wed, 25 Jul 2012 12:23:22 GMT</d:getlastmodified> <d:getcontentlength>0</d:getcontentlength> <d:displayname>Soft</d:displayname> <d:creationdate>2012-07-25T12:23:21Z</d:creationdate> </d:prop> </d:propstat> </d:response> <d:response> <d:href>/Downloads/car.png</d:href> <d:propstat> <d:status>HTTP/1.1 200 OK</d:status> <d:prop> <d:resourcetype/> <d:getlastmodified>Wed, 25 Jul 2012 12:23:57 GMT</d:getlastmodified> <d:getcontenttype>image/png</d:getcontenttype> <d:getcontentlength>63434</d:getcontentlength> <d:displayname>car.png</d:displayname> <d:creationdate>2012-07-25T12:23:56Z</d:creationdate> </d:prop> </d:propstat> </d:response> <d:response> <d:href>/Downloads/song.mp3</d:href> <d:propstat> <d:status>HTTP/1.1 200 OK</d:status> <d:prop> <d:resourcetype/> <d:getlastmodified>Wed, 25 Jul 2012 12:23:57 GMT</d:getlastmodified> <d:getcontenttype>audio/mpeg</d:getcontenttype> <d:getcontentlength>6343431</d:getcontentlength> <d:displayname>song.mp3</d:displayname> <d:creationdate>2012-07-25T12:23:56Z</d:creationdate> </d:prop> </d:propstat> </d:response> </d:multistatus>
