feat(java-spring): restore file by url

This commit is contained in:
sshakndr
2025-01-24 13:44:28 +07:00
parent d052523451
commit 1b03eb30cb
4 changed files with 24 additions and 11 deletions

View File

@ -1,5 +1,6 @@
# Change Log # Change Log
- java-spring: restore by url
- java: restore by url - java: restore by url
- golang: restore by url - golang: restore by url
- csharp-mvc: restore by url - csharp-mvc: restore by url

View File

@ -86,6 +86,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
@ -678,16 +679,25 @@ public class FileController {
Path bumpedFile = Paths.get(bumpedVersionStringDirectory, previousBasename); Path bumpedFile = Paths.get(bumpedVersionStringDirectory, previousBasename);
Files.move(sourcePathFile, bumpedFile); Files.move(sourcePathFile, bumpedFile);
String recoveryVersionStringDirectory = historyManager.versionDir( if (body.getUrl() != null) {
historyDirectory, java.net.HttpURLConnection connection = (java.net.HttpURLConnection) new URL(body.getUrl())
body.getVersion(), .openConnection();
true InputStream stream = connection.getInputStream();
); storageMutator.createFile(sourcePathFile, stream);
Path recoveryPathFile = Paths.get(recoveryVersionStringDirectory, previousBasename); stream.close();
String recoveryStringFile = recoveryPathFile.toString(); connection.disconnect();
FileInputStream recoveryStream = new FileInputStream(recoveryStringFile); } else {
storageMutator.createFile(sourcePathFile, recoveryStream); String recoveryVersionStringDirectory = historyManager.versionDir(
recoveryStream.close(); historyDirectory,
body.getVersion(),
true
);
Path recoveryPathFile = Paths.get(recoveryVersionStringDirectory, previousBasename);
String recoveryStringFile = recoveryPathFile.toString();
FileInputStream recoveryStream = new FileInputStream(recoveryStringFile);
storageMutator.createFile(sourcePathFile, recoveryStream);
recoveryStream.close();
}
JSONObject responseBody = new JSONObject(); JSONObject responseBody = new JSONObject();
responseBody.put("error", null); responseBody.put("error", null);

View File

@ -30,4 +30,5 @@ import lombok.Setter;
public class Restore { public class Restore {
private String fileName; private String fileName;
private Integer version; private Integer version;
private String url;
} }

View File

@ -298,7 +298,8 @@
const query = new URLSearchParams(window.location.search) const query = new URLSearchParams(window.location.search)
const payload = { const payload = {
fileName: query.get('fileName'), fileName: query.get('fileName'),
version: event.data.version version: event.data.version,
url: event.data.url
} }
const request = new XMLHttpRequest() const request = new XMLHttpRequest()
request.open('PUT', 'restore') request.open('PUT', 'restore')