Содержимое папки

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

pagination

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>