Содержимое папки
Чтобы получить список файлов и подпапок, укажите в запросе заголовок 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>