Skip to content

Commit 0949c86

Browse files
cleanup pruneBackups
1 parent bb8eb99 commit 0949c86

File tree

1 file changed

+21
-28
lines changed

1 file changed

+21
-28
lines changed

DriveBackup/src/main/java/ratismal/drivebackup/uploaders/onedrive/OneDriveUploader.java

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -431,39 +431,32 @@ private void pruneBackups(@NotNull FQID parent) throws Exception {
431431
if (fileLimit == -1) {
432432
return;
433433
}
434-
Request request = new Request.Builder()
434+
Request childItemRequest = new Request.Builder()
435435
.addHeader("Authorization", "Bearer " + accessToken)
436436
.url("https://graph.microsoft.com/v1.0/drives/" + parent.driveId + "/items/" + parent.itemId + "/children?sort_by=createdDateTime")
437437
.build();
438-
Response response = DriveBackup.httpClient.newCall(request).execute();
439-
JSONObject parsedResponse = new JSONObject(response.body().string());
440-
response.close();
441-
ArrayList<String> fileIDs = new ArrayList<>();
442-
JSONArray jsonArray = parsedResponse.getJSONArray("value");
443-
for (int i = 0; i < jsonArray.length(); i++) {
444-
fileIDs.add(jsonArray.getJSONObject(i).getString("id"));
438+
JSONArray items;
439+
try (Response childItemResponse = DriveBackup.httpClient.newCall(childItemRequest).execute()) {
440+
JSONObject parsedResponse = new JSONObject(childItemResponse.body().string());
441+
items = parsedResponse.getJSONArray("value");
445442
}
446-
if(fileLimit < fileIDs.size()){
447-
logger.info(
448-
intl("backup-method-limit-reached"),
449-
"file-count", String.valueOf(fileIDs.size()),
450-
"upload-method", getName(),
451-
"file-limit", String.valueOf(fileLimit));
443+
if(fileLimit >= items.length()) {
444+
return;
452445
}
453-
for (Iterator<String> iterator = fileIDs.listIterator(); iterator.hasNext(); ) {
454-
String fileIDValue = iterator.next();
455-
if (fileLimit < fileIDs.size()) {
456-
request = new Request.Builder()
457-
.addHeader("Authorization", "Bearer " + accessToken)
458-
.url("https://graph.microsoft.com/v1.0/drives/" + parent.driveId + "/items/" + fileIDValue)
459-
.delete()
460-
.build();
461-
DriveBackup.httpClient.newCall(request).execute().close();
462-
iterator.remove();
463-
}
464-
if (fileIDs.size() <= fileLimit){
465-
break;
466-
}
446+
logger.info(
447+
intl("backup-method-limit-reached"),
448+
"file-count", String.valueOf(items.length()),
449+
"upload-method", getName(),
450+
"file-limit", String.valueOf(fileLimit));
451+
int itemsToDelete = items.length() - fileLimit;
452+
for (int i = 0; i < itemsToDelete; i++) {
453+
String fileIDValue = items.getJSONObject(i).getString("id");
454+
Request deleteRequest = new Request.Builder()
455+
.addHeader("Authorization", "Bearer " + accessToken)
456+
.url("https://graph.microsoft.com/v1.0/drives/" + parent.driveId + "/items/" + fileIDValue)
457+
.delete()
458+
.build();
459+
DriveBackup.httpClient.newCall(deleteRequest).execute().close(); // TODO handle deletion failure
467460
}
468461
}
469462

0 commit comments

Comments
 (0)