У меня есть две новости. Традиционно хорошая и плохая.
Хорошая новость
Вчера пришло извещение, что Bitcasa наконец-то запустила API, пока в бета-версии. Также представлены SDK на PHP и JAVA, которые опубликованы на GitHub. В дальнейшем обещают SDK для Python, iOS, Android, Ruby и других.
Сразу после регистрации дают 5 ГБ места, и можно за счет рефов (по гигабайту за установку) и других «квестов» получить до 20 бесплатных ГБ. За $99/год предлагается 1 ТБ, а $999/год — неограниченное место.
API позволяет выполнять следующие действия:
Каталоги
- Просмотр списка
- Создание
- Удаление
- Переименование
- Перемещение
- Копирование
Файлы
- Загрузка
- Скачивание
- Удаление
- Переименование
- Перемещение
- Копирование
А теперь плохая новость
Полез тестировать, и оказалось, что пока всё слишком сыро, да и есть откровенные фэйлы. Итак о замеченных недостатках.
Не замечено, как с помощью API получить имя пользователя и доступную/использованную квоту. Также неизвестно, есть ли какие-то ограничения по размерам файлов. Скачивание (download) поддерживает заголовок Range, соответственно позволяет скачать любой кусок файла. А вот с Upload традиционно для многих облачных хранилищ не так радужно, и загрузка (upload) частями или продолжение загрузки после разрыва связи невозможно.
Для авторизации приложений используется, что-то похожее на OAuth 2, но несовместимое с OAuth 2. Вот спрашивается зачем делать почти тоже самое, просто немного по другому назвать параметры? Вместо code использовать authorization_code, вместо client_secret — secret, вместо redirect_uri — redirect, и т.д. Также отсутствует параметр state, который позволяет передавать различные данные из приложения на redirect. Имхо, за такое нужно гвоздь в голову разработчикам забивать… Ну есть же стандарт, зачем делать свой велосипед отламывая детали у готового, тем более не предлагающий никаких преимуществ? Ну не осилили реализовать OAuth 2 полностью, пусть хоть то, что есть будет совместимо. А теперь получается, что на всех хранилищах, которые используют OAuth 2 авторизацию, можно использовать один и то же модуль, а для Bitcasa нужен отдельный…
При попытке авторизации, постоянно требует ввести логин и пароль, хоть ты и залогинен уже. Также никаких сообщений о том, что какое-то приложение хочет получить доступ к вашим файлам и кнопочек разрешить или нет. Несмотря на наличие в параметрах приложения Redirect Uri, Bitcasa его игнорирует (возможно потому, что пока приложение в Sandbox) и переадресует на любой адрес указанный в запросе.
При этом используется только авторизация с использованием кода авторизация. Также несколько необычно то, что токен передается в строке запроса, как-то привычнее использовать заголовок Authorization.
Несмотря на то, что Bitcasa позиционируется, как защищенное хранилище с шифрованием на стороне клиента, каких-либо упоминаний о необходимости шифрования файлов перед загрузкой их с помощью API не замечено, в PHP SDK тоже никакого шифрования. Разве, что пути файлов в base64 кодируются.
В общем такое ощущение, что самое сложное для разработчиков API очередного облачного хранилища — сделать так, чтобы было максимально непохоже и несовместимо с API других хранилищ.
Будем надеяться, что описанные корявости в будущем поправят…
Автор: zapimir