Я использую конечную точку Dropbox/Delta для отслеживания изменений внутри Dropbox. Точнее, следующий фрагмент кода позволяет мне отслеживать изменения в «/ superfolder» рекурсивно (я использую здесь DbxClientV1):Глобальный курсор в Dropbox API v2
List<String> listOfResults = new ArrayList<String>();
String path = "/superfolder";
String cursor = null;
while (true) {
DbxDelta<DbxEntry> deltaWithPathPrefix = client.getDeltaWithPathPrefix(cursor, path);
cursor = deltaWithPathPrefix.cursor;
if (deltaWithPathPrefix.reset) {
System.out.println("Reset!");
}
for (DbxDelta.Entry entry : deltaWithPathPrefix.entries) {
if (entry.metadata == null) {
System.out.println("Deleted: " + entry.lcPath);
listOfResults.add(entry.lcPath);
} else {
System.out.println("Added or modified: " + entry.lcPath);
}
}
if (!deltaWithPathPrefix.hasMore) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(MainSearchV1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Теперь я перешел на DbxClientV2 клиента. Для того, чтобы отслеживать изменения на раздаточном я использую client.files.listFolder() в следующем виде:
TreeMap<String, Metadata> children = new TreeMap<String, Metadata>();
Files.ListFolderResult result;
String cursor = null;
while (true) {
if (cursor == null) {
result = client.files.listFolder("/superfolder");
} else {
result = client.files.listFolderContinue(cursor);
}
cursor = result.cursor;
for (Metadata md : result.entries) {
if (md instanceof DeletedMetadata) {
children.remove(md.pathLower);
System.out.println("Deleted: " + md.pathLower);
} else {
children.put(md.pathLower, md);
System.out.println("State: " + md.pathLower);
System.out.println(md.toString());
}
}
if (!result.hasMore) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
}
}
Regretably, я обнаружил, что я могу только отслеживать изменения только из папки «superfolder». Есть ли способ получить «глобальный курсор», который рекурсивно отслеживает изменения в Dropbox API v2?
Это работает! Я не смог найти его в документации Dropbox API v2, но оказалось, что версия maven была обновлена с «2.0-бета-1» до «2.0-бета-3», так как я последний раз ее проверял. благодаря – michal