diff --git a/src/main/java/org/cryptomator/ui/keyloading/hub/RegisterDeviceController.java b/src/main/java/org/cryptomator/ui/keyloading/hub/RegisterDeviceController.java index 08af2492a..0db265b3b 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/hub/RegisterDeviceController.java +++ b/src/main/java/org/cryptomator/ui/keyloading/hub/RegisterDeviceController.java @@ -32,6 +32,7 @@ import javafx.stage.Stage; import javafx.stage.WindowEvent; import java.io.IOException; import java.net.InetAddress; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @@ -62,6 +63,7 @@ public class RegisterDeviceController implements FxController { private final P384KeyPair deviceKeyPair; private final CompletableFuture result; private final HttpClient httpClient; + private final StringTemplate.Processor API_BASE = this::resolveRelativeToApiBase; private final BooleanProperty invalidSetupCode = new SimpleBooleanProperty(false); private final BooleanProperty workInProgress = new SimpleBooleanProperty(false); @@ -108,9 +110,8 @@ public class RegisterDeviceController implements FxController { public void register() { workInProgress.set(true); - var apiRootUrl = hubConfig.getApiBaseUrl(); - var userReq = HttpRequest.newBuilder(apiRootUrl.resolve("users/me")) // + var userReq = HttpRequest.newBuilder(API_BASE."users/me") // .GET() // .timeout(REQ_TIMEOUT) // .header("Authorization", "Bearer " + bearerToken) // @@ -136,7 +137,7 @@ public class RegisterDeviceController implements FxController { var now = Instant.now().toString(); var dto = new CreateDeviceDto(deviceId, deviceNameField.getText(), BaseEncoding.base64().encode(deviceKeyPair.getPublic().getEncoded()), "DESKTOP", jwe.serialize(), now); var json = toJson(dto); - var deviceUri = apiRootUrl.resolve("devices/" + deviceId); + var deviceUri = API_BASE."devices/\{deviceId}"; var putDeviceReq = HttpRequest.newBuilder(deviceUri) // .PUT(HttpRequest.BodyPublishers.ofString(json, StandardCharsets.UTF_8)) // .timeout(REQ_TIMEOUT) // @@ -204,6 +205,12 @@ public class RegisterDeviceController implements FxController { result.cancel(true); } + private URI resolveRelativeToApiBase(StringTemplate template) { + var path = template.interpolate(); + var relPath = path.startsWith("/") ? path.substring(1) : path; + return hubConfig.getApiBaseUrl().resolve(relPath); + } + //--- Getters & Setters public BooleanProperty invalidSetupCodeProperty() { return invalidSetupCode;