API хранилища данных

Я создаю одностраничное веб-приложение, которое должно помочь писателям закончить свое письмо. Я называю это "Просто пиши, черт возьми!" (https://www.justwritedammit.com). Он делает упор на то, чтобы войти в поток письма и блокировать отвлекающие факторы.

Одной из потенциальных функций было автоматическое сохранение данных для пользователя и синхронизация этих данных между несколькими комбинациями компьютера/браузера и сеансами. Пользователь выберет своего поставщика хранилища, то есть Dropbox, Google Drive или Microsoft OneDrive, проделает весь танец OAuth и заставит все работать напрямую через браузер и поставщика, даже не касаясь моего сервера. В настоящее время приложение не имеет серверной части. Я надеялся минимизировать свои расходы на хостинг при создании минимального продукта. В конце концов, мне, вероятно, понадобится сервер, но сейчас я бы хотел, чтобы он находился на стороне клиента, насколько это возможно.

Я еще не добрался до Google Диска, так что судить о нем можно, но, насколько я могу судить, несмотря на поверхностные обещания предоставить API для доступа к файловым данным, ни Dropbox, ни[1] OneDrive на самом деле нет. Они предоставляют доступ к метаданным и позволяют инициировать загрузку в локальную файловую систему для пользователя, но ни один из них не позволяет фактически загрузить файл в браузер.

В Dropbox есть Datastore API, который позволяет хранить информацию о каждом пользователе через Интернет, но он не создает физический файл для пользователя, и нет четкого способа представить эти данные пользователю вне контекста приложения. . Я использую эту функцию, чтобы обеспечить синхронизацию сеансов между браузерами и компьютерами, но чтобы предоставить пользователю физический файл, мне пришлось внедрить систему, использующую URI данных для загрузки файла из браузера, что совершенно точно не может быть автоматизирована.

Итак, мой вопрос: я что-то пропустил? Возможно ли это, и я просто не потратил на это достаточно времени? Возможно ли это с Google Диском или мне не стоит тратить свое время?

[1] РЕДАКТИРОВАТЬ: как указывает smarx, это возможно, поскольку я хочу, чтобы это было с Dropbox. Класс Client API хранилища данных имеет методы readFile и writeFile, которые делают именно то, что мне нужно. Однако остается открытым вопрос, имеют ли Google Диск и Microsoft OneDrive аналогичную функциональность.


person moron4hire    schedule 08.04.2014    source источник


Ответы (2)


Полный веб-API Dropbox можно использовать из JavaScript в браузере (включая сохранение и загрузку файлов). Полную информацию см. на https://www.dropbox.com/developers/core/docs. Документация по API.

Dropbox.js — ваш лучший выбор для JavaScript SDK для API Dropbox: https://github.com/dropbox/dropbox-js.

Пакет Datastore API SDK (который вы уже нашли) также включает методы доступа к файлам. По сути, это форк dropbox.js, но для чистой работы с файлами я бы остановился на dropbox.js с открытым исходным кодом.

Вот сообщение в блоге, которое я написал некоторое время назад, в котором показано, как аутентифицировать пользователя и записать файл в Dropbox этого пользователя: https://www.dropbox.com/developers/blog/71/writing-a-file-with-the-dropbox-javascript-sdk.

Краткая версия кода вставлена ​​ниже для удобства, но более реалистичный пример можно найти в сообщении блога.

var client = new Dropbox.Client({ key: 'YOUR-APP-KEY-HERE' });
client.authenticate(function () {
    client.writeFile('hello.txt', 'Hello, World!', function () {
        alert('File written!');
    });
});
person user94559    schedule 08.04.2014
comment
Странно, я только что читал документацию по Datastore API и, должно быть, полностью упустил из виду readFile и writeFile. Они работают именно так, как я хочу. Но все же остается вопрос, возможна ли такая же функциональность с Google Диском или Microsoft OneDrive? - person moron4hire; 09.04.2014

Похоже, вам нужен Drive Realtime API: https://developers.google.com/drive/realtime/

Он автоматически сохраняет контент в том виде, в котором он был напечатан, обрабатывает конфликты между несколькими одновременными сеансами и т. д.

person Cheryl Simon    schedule 08.04.2014