Quantcast
Channel:
Viewing all articles
Browse latest Browse all 74

WebDAV Диск.Яндекс + Delphi (InDy TidWebDAV)

$
0
0
Стоит задача опубликовать файл, который находится в папке Яндекс-Диска.
Т.е. файл там уже есть, нужно только дать команду опубликовать и получить в ответ ссылку на скачивание файла.

На форму кидаем кнопку, компоненту TidWebDAV, TIdSSLIOHandlerSocketOpenSSL TIdLogFile и связываем их, добавляем ещё на форму компоненту TMemo, в которую будет выводить результат.
В папку проекта копируем 2 файла: ssleay32.dll и libeay32.dll т.к. общение будет проходить по протоколу https.
Будем использовать OAuth авторизацию, для которой не нужны логин и пароль.
В корне Яндекс-Диска есть папка tst, в которой лежит файл readme.txt. Его и будем публиковать и получать ссылку на скачивание. Чтобы опубликовать файл или папку, следует передать XML файл с набором команд. В ответ тоже получим XML со ссылкой на опубликованный файл.

Для получения OAuth токена следует прочитать это: https://tech.yandex.ru/oauth/
Принцип такой.
Каждый пользователь программы должен получить свой OAuth для своей учётной записи Яндекса.
Авторизуемся на сайте oauth https://oauth.yandex.ru/и создаёт новое Приложение, даём ему название и выбираем, какие сервисы Яндекса будут доступны этому Приложению ( http://f6.s.qip.ru/14a5VJj7F.png ). Приложение - это условно набор яндекс-сервисов.

Когда получили ID (client_id) только что созданного приложения, то уже можем получить oauth token по такой ссылке:
https://oauth.yandex.ru/authorize?response_type=token&client_id=c953e33d6ec14895aa736f33143e73n7
Это всё есть в документации. См ссылки ниже.

procedure TForm2.Button1Click(Sender: TObject);Var
 s, r: TStringStream;
 u: UTF8String;begin
  u := '<propertyupdate xmlns="DAV:">' + sLineBreak +'<set>'  + sLineBreak +'<prop>'  + sLineBreak +'<public_url xmlns="urn:yandex:disk:meta">true</public_url>'  + sLineBreak +'</prop>'  + sLineBreak +'</set>'  + sLineBreak +'</propertyupdate>';

  s := TStringStream.Create(u);

  s.Seek(0, 0);

  r := TStringStream.Create('');try
    IdWebDAV1.Request.Clear;
    IdWebDAV1.Request.CharSet := 'UTF-8';
    IdWebDAV1.Request.BasicAuthentication := False;
    IdWebDAV1.Request.Host := 'webdav.yandex.ru';
    IdWebDAV1.Request.CustomHeaders.Add('Authorization: OAuth 6e1ec970696e432093c4e09df9582972');
    IdLogFile1.Active := True;
    IdWebDAV1.DAVPut DAVPropPatch('https://webdav.yandex.ru/tst/readme.txt', s, r);
    r.Position := 0;
    Memo1.Lines.Text := UTF8Decode(r.DataString);finally
    s.Free;
    r.Free;end;end;


Delphi 2007, Indy 10_4885.

Ссылки:
Описание WebDav API Диска: https://tech.yandex.ru/disk/webdav/
Публикация файлов и папок: https://tech.yandex.ru/disk/doc/dg/reference/publish-docpage/
Об OAuth http://www.webdelphi.ru/tag/oauth/


Дополнительно.
У Яндекса есть Полигон для тестирования REST API https://tech.yandex.ru/disk/poligon/ , но это не относится к WebDAV.

Viewing all articles
Browse latest Browse all 74

Trending Articles


FORECLOSURE OF REAL ESTATE MORTGAGE


HOY PANGIT, MAGBAYAD KA!


Girasoles para colorear


Presence Quotes – Positive Quotes


Love Quotes Tagalog


Long Distance Relationship Tagalog Love Quotes


“BAHAY KUBO HUGOT”


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


EASY COME, EASY GO


UPDATE SC IDOL: TWO BECOME ONE


Pokemon para colorear


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


OFW quotes : Pinoy Tagalog Quotes


Tropa Quotes


“Mali man na ikaw ay ibigin ko, akoy iibig padin sayo”


RE: Mutton Pies (frankie241)


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.