Задать вопрос
@freeeeez

Почему не работает MOVE в API Яндекс.Диска?

Пробую переместить папки на диске и получаю ошибку, хотя делаю все правильно.
Получил access_token, попробовал получить список папок на диске через метод
https://cloud-api.yandex.net/v1/disk/resources
все работает прекрасно.
Попробовал создать папку через метод PUT
https://cloud-api.yandex.net/v1/disk/resources
тоже все получилось.
А метод
https://cloud-api.yandex.net/v1/disk/resources/move
ни работает ни в какую
$data = array(
"from" => urlencode('/Music'),
"path" => urlencode('/App'),
);


Итого получаю ошибку
Array
(
[message] => Ошибка проверки поля "from": Это поле является обязательным.
[description] => Error validating field "from": This field is required.
[error] => FieldValidationError
)

Поле from в запросе передается, почему не работает?

UPD:
$url = 'https://cloud-api.yandex.net/v1/disk/resources/move';
		
		$data = array(
			"from"	=> urlencode('/Music'),
			"path"	=> urlencode('/App'),
			
		);
		$result = $this->sendQueryYaDisk($url,$data,'POST');

private function sendQueryYaDisk($methodAPI = '', $arrQuery = [], $methodQuery = 'GET')
    {
        if($methodQuery == 'POST') {
            $fullUrlQuery = $methodAPI;
        } else {
            $fullUrlQuery = $methodAPI . '?' . http_build_query($arrQuery);
        }

        $ch = curl_init($fullUrlQuery);
        switch ($methodQuery) {
            case 'PUT':
                curl_setopt($ch, CURLOPT_PUT, true);
                break;

            case 'POST':
                curl_setopt($ch, CURLOPT_POST, 1);
	            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrQuery));
                break;

            case 'DELETE':
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
                break;
        }

        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth ' . $token]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $resultQuery = curl_exec($ch);
        curl_close($ch);

        return (!empty($resultQuery)) ? json_decode($resultQuery, true) : [];
    }
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы