Клуб API Диска

май 2017
Ошибка запроса retrofit2 yandexsdk. Ошибка Attempt to invoke virtual method?
4 мая, 20:14

Здесь формируется на отправку запрос(в документации яндекс написано, что параметры path и from должны иметь url формат, я параметры написал вручную:

new AsyncTask<Void, Void, Void>() {

                @Override
                protected Void doInBackground(Void... params) {
                    RestClient client = null;
                    try {

                        client = RestClientUtil.getInstance(credentials);
                        client.move("%2F1.jpg", "%2F211.jpg", false);
                    } catch (HttpCodeException ex) {
                        Log.d(TAG, "renameMoveItem", ex);
                        sendException(ex.getResponse().getDescription());
                    } catch (IOException | ServerException ex) {
                        Log.d(TAG, "renameMoveItem", ex);
                        sendException(ex);
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void aVoid) {
                    RenameMoveItemFragment targetFragment = (RenameMoveItemFragment) getTargetFragment();
                    if (targetFragment != null) {
                        targetFragment.onComplete();
                    }
                }
            }.execute();
        }

вот сам интерфейс c sdk:

@POST("/v1/disk/resources/move")
    Link move(@Query("from") String from, @Query("path") String path,
              @Query("overwrite") Boolean overwrite)
            throws IOException, ServerIOException;

ВОТ ЛОГИ:

FATAL EXCEPTION: AsyncTask #2
                    Process: com.example.gibkin.multycloud, PID: 10297
                                                                               java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                                   at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                                                   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                                   at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                                   at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                                                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                   at java.lang.Thread.run(Thread.java:818)
                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
                                                                                   at com.example.gibkin.multycloud.yandex.example.IODialogRetainedFragment.sendException(IODialogRetainedFragment.java:32)
                                                                                   at com.example.gibkin.multycloud.yandex.example.IODialogRetainedFragment.sendException(IODialogRetainedFragment.java:28)
                                                                                   at com.example.gibkin.multycloud.yandex.example.RenameMoveItemFragment$RenameMoveItemRetainedFragment$1.doInBackground(RenameMoveItemFragment.java:144)
                                                                                   at com.example.gibkin.multycloud.yandex.example.RenameMoveItemFragment$RenameMoveItemRetainedFragment$1.doInBackground(RenameMoveItemFragment.java:130)
                                                                                   at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                                                   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                                                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                                                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                                                   at java.lang.Thread.run(Thread.java:818) 

1 комментарий
yandex sdk ,android,java,error,rename file,retrofit2,move file,api
Не работает лист
6 мая, 15:33

Импортнул исходники SDK, получил токен.

Создание директорий, авторизация срабатывают, а вот получение списка - нет

 var sdk = new DiskSdkClient(oauthToken);
sdk.GetListAsync();

Прилетает ошибка:
Disk.SDK.SdkException: Входная строка имела неверный формат.

Странно, т.к. параметров не передаю никаких, может я что-то недопонял просто?

Нет комментариев
Можно ли отключить синхронизацию по имени папки или по расширению файла
12 мая, 08:48

Добрый день!

Есть ли возможность в Я.Диске сделать так чтобы не синхронизировалась папка(по названию) или же файлы с определенным расширением. Т.е. есть ли возможность настройть как к примеру в git (.gitignore) ? Чтоб когда в папку на компьютере загружаю папку с файлами, то определенные файлы ни когда не синхронизировались с Я.Диском?

Нет комментариев
синхронизация,Синхронизация яндекс.дтска
Добавьте актуальности для iOS/MacOS разрабочиков?
13 мая, 10:59

Добрый день!

У Вас есть API написаный 4!!! года назад на Objective-C

Прошу дополните его современным SWIFT 3? 

Нет комментариев
ios,api,swift
Возможно ли получить текст текстового файла (публичного) через REST API Диска?
15 мая, 23:14

Хочу узнаать, есть ли возможность читать текстовые файлы через API ЯндексДиска.

Нет комментариев
API,текст
Получение полного содержимого папки и её подпапок через REST API
22 мая, 11:41

Господа, правильно ли я понимаю, что в настоящий момент REST API не позволяет получить информацию обо всех подпапках и их содержимом адекватным способом, при условии, что папка имеет множество подпапок?

В случае получения информации о подпапках через "Метаинформацию о файле или папке" и рекурсивного прохождения через все подпапки нам понадобится сделать ровно столько запросов, сколько существует папок и подпапок, а это кажется не очень рациональным.

Если получать информацию через "Плоский список всех файлов", то попутно придётся получать информацию о всех остальных файлах и папках, что тоже не слишком здорово.

Было бы круто добавить в "Плоский список всех файлов" опциональный параметр "path", чтобы задать папку, в которой следует искать файлы. Либо, допустим, фильтр путей к файлам по регулярному выражению.

Или я что-то упустил, и есть другой способ?

Нет комментариев
Yandex Disk OPS
26 мая, 00:20

Приятного чтения и хорошего настроения.

Прошло уже пару месяцев с нашей первой публикации и как было обещано мы продолжаем держать  Вас в курсе последних событий. В этом посте мы расскажем о том, что было сделано за столь длинный срок, о тех вещах которые изменились в проекте и том, что ожидает нас впереди.

И первое о чем мы расскажем будут основные изменения, которые затронули наш проект.

1. Изменилось название.
      Мы сделали его немного короче.
      - Yandex Disk Operations
      + Yandex Disk OPS

2. Изменились команды.
      Мы сформировали еще одну команду
      и осуществили несколько трансферов.

3. Изменились проекты.
     Вместо одного большого проект было
     принято решение реализовать 3 проекта:
     - Operations
     + REST, CLI и OPS

В следующих постах мы расскажем про каждый проект подробно и в отдельности.
А пока давайте ответим на вопрос, что же мы делали эти два месяца.

1. Прошли курс обучения кросс-платформенной разработки приложений на C++.
     #vim #git #cmake #catch #travis #doxygen #cpack #hunter #cppcheck #docker ...
2. Набросали ТЗ для 3 новых проектов.
3. Разработали первый проект REST, представляющий из себя SDK на С++.
     Писали, тестировали, документировали и пакетировали.
4. Разработали CLI с использованием написанного SDK.
     Получили хороший опыт в совместной разработке.
   
Считаем, что сделано уже немало, но осознаем что впереди еще больше.
И вот они грядущие интересные задачи первого жаркого летнего месяца:

- Реализовать пакет получение слепка диска. @tree.
- Реализовать пакет поиска копий данных на диске. @duplicate.
- Реализовать пакет удаления копий данных с диска. @clean.
- Реализовать пакет поиска копий данных на двух дисках. @replica.
- Реализовать пакет получения разницы слепков двух дисков. @subtract.
- Реализовать пакет копирования данных с одного диска на другой. @copy.
- Реализовать пакет объединения содержимого двух дисков. @merge.
- Интегрировать данные пакеты в проект CLI.

P.S. Всем спасибо за внимание, будем держать вас в курсе событий и дальше.

P.P.S. Стоит добавить пару фотографий из нашего Цифрового Журнала, он как ничто другое отражает ритм нашей усердной работы.

Нет комментариев
Яндекс Диск,API
Yandex WebDAV API - постраничная загрузка
31 мая, 08:08

Добрый день!

Есть проблема с постраничной загрузкой, используя WebDAV API.

Есть три запроса:

https://webdav.yandex.ru/Фото/?amount=3

https://webdav.yandex.ru/Фото/?amount=3&offset=3

https://webdav.yandex.ru/Фото/

Все три отрабатывают одинаково: возвращаюся ВСЕ элементы в папке, то есть работает так, как если бы amount и offset не передавались.

В папке 12 Гб данных, загрузка всего содержимого и парсинг (тем более на мобильном устройстве) - это дорога в ад. Позарез нужна пагинация. 

Нет комментариев
webdav,API