14.07.2012

Dropbox API (Java SE).

Dropbox предоставляет множество библиотек на разных языках, для доступа к API. А если вы собираетесь работать на более низком уровне - пожалуйста, есть детальное описание REST API. В целом, все подробно документировано, но перейдя по ссылке Tutorial для Java SDK, видим руководство к Android SDK. На вопрос, где руководство к Java SDK, ответ простой: "Where are the Java instructions? For platforms other than Android, all you need is to download and uncompress the latest version of the Java SDK from Development kits. Include everything in the lib folder on your project's build path." Все конечно так, добавляем библиотеки в проект, кроме этого ничего не надо. Вместе с SDK идет и пример, но не совсем такой, как хотелось бы. Небольшая неясность, на первый взгляд, с Java SDK связана с "политическими" соображениями на данный момент. Приведу элементарный пример использования Dropbox API, для Java SE.

1. Аутентификация приложения Создаем приложение Dropbox с необходимым уровнем доступа - отдельная папка или весь Dropbox. У нас уже есть два ключа (APP_KEY, APP_SECRET) для аутентификации приложения. Теперь нужно разрешить приложению доступ и получить еще два ключа (разумеется, это делается один раз):

private DropboxAPI<WebAuthSession> auth() throws DropboxException, IOException {

//известные ключи и тип доступа
final String APP_KEY = "";
final String APP_SECRET= "";
final AccessType ACCESS_TYPE = AccessType.DROPBOX;

AppKeyPair appKey;

appKey = new AppKeyPair(APP_KEY, APP_SECRET);
WebAuthSession session = new WebAuthSession(appKey, ACCESS_TYPE);

WebAuthSession.WebAuthInfo info = session.getAuthInfo();

System.out.println("1. Перейдите по ссылке: " + info.url);
System.out.println("2. Разрешите доступ приложению.");
System.out.println("3. Нажмите ENTER");

System.in.read();

//полученные ключи
System.out.println("Access Key: " + session.getAccessTokenPair().key);
System.out.println("Access Secret " + session.getAccessTokenPair().secret);

DropboxAPI<WebAuthSession> api = new DropboxAPI<WebAuthSession>(session);

return api;
}

2. Пример загрузки файлов из директории Dropbox. Вот так можно загрузить все файлы из указанной папки Dropbox:

/**
     * Загрузить файлы из директории Dropbox в локальную директорию
     * @param dbDir Директория Dropbox
     * @param localDir Локальная директория для сохранения файлов
     * @return Список имен файлов в локальной директории, которые были загружены
     * @throws DropboxException
     */
    public List<String> getFiles(String dbDir, String localDir)
                                                       throws DropboxException {
       
        //максимальное количество элементов в директории Dropbox,
        //которые будут загружены
        final int MAX_FILE_LIST = 1000;
       
            List<String> result = new ArrayList<String>();
       
            Entry metadata =
                          api.metadata(dbDir, MAX_FILE_LIST, null, true, null);
            List<Entry> objList = metadata.contents;
           
            for(Entry buff: objList) {
   
              File lDir = new File(localDir);
              if (!lDir.exists())
                new File(localDir).mkdir();
               
              File outFile = new File(localDir, buff.fileName());
              OutputStream outStream;
               
            try {
               
              outStream = new FileOutputStream(outFile);
              //api создаем после аутентификации приложения
              api.getFile(dbDir + "/" + buff.fileName(), null, outStream, null);
              result.add(buff.fileName());

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

        return result;
    }

Ну вот, это были самые простые примеры, "для старта". А дальше вы найдете все необходимое в документации :). 



Теги: dropbox programming java

comments powered by Disqus