Skip to content

Commit

Permalink
Extract RemoteAttachment to a top-level entity
Browse files Browse the repository at this point in the history
  • Loading branch information
jon-signal committed Oct 15, 2024
1 parent 30ec06c commit 0adaa33
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.PositiveOrZero;
import javax.validation.constraints.Size;
Expand Down Expand Up @@ -60,13 +59,13 @@
import org.whispersystems.textsecuregcm.backup.CopyParameters;
import org.whispersystems.textsecuregcm.backup.CopyResult;
import org.whispersystems.textsecuregcm.backup.MediaEncryptionParameters;
import org.whispersystems.textsecuregcm.entities.RemoteAttachment;
import org.whispersystems.textsecuregcm.util.BackupAuthCredentialAdapter;
import org.whispersystems.textsecuregcm.util.ByteArrayAdapter;
import org.whispersystems.textsecuregcm.util.ByteArrayBase64UrlAdapter;
import org.whispersystems.textsecuregcm.util.ECPublicKeyAdapter;
import org.whispersystems.textsecuregcm.util.ExactlySize;
import org.whispersystems.textsecuregcm.util.Util;
import org.whispersystems.textsecuregcm.util.ValidBase64URLString;
import org.whispersystems.websocket.auth.Mutable;
import org.whispersystems.websocket.auth.ReadOnly;
import reactor.core.publisher.Mono;
Expand Down Expand Up @@ -462,16 +461,6 @@ public CompletionStage<UploadDescriptorResponse> uploadTemporaryAttachment(
result.signedUploadLocation()));
}

public record RemoteAttachment(
@Schema(description = "The attachment cdn")
@NotNull
Integer cdn,

@NotBlank
@ValidBase64URLString
@Schema(description = "The attachment key")
String key) {}

public record CopyMediaRequest(
@Schema(description = "The object on the attachment CDN to copy")
@NotNull
Expand Down Expand Up @@ -510,7 +499,7 @@ public record CopyMediaRequest(

CopyParameters toCopyParameters() {
return new CopyParameters(
sourceAttachment.cdn, sourceAttachment.key,
sourceAttachment.cdn(), sourceAttachment.key(),
objectLength,
new MediaEncryptionParameters(encryptionKey, hmacKey, iv),
mediaId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/

package org.whispersystems.textsecuregcm.entities;

import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.whispersystems.textsecuregcm.util.ValidBase64URLString;

public record RemoteAttachment(
@Schema(description = "The attachment cdn")
@NotNull
Integer cdn,

@NotBlank
@ValidBase64URLString
@Schema(description = "The attachment key")
String key) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
import org.whispersystems.textsecuregcm.backup.BackupManager;
import org.whispersystems.textsecuregcm.backup.BackupUploadDescriptor;
import org.whispersystems.textsecuregcm.backup.CopyResult;
import org.whispersystems.textsecuregcm.entities.RemoteAttachment;
import org.whispersystems.textsecuregcm.mappers.CompletionExceptionMapper;
import org.whispersystems.textsecuregcm.mappers.GrpcStatusRuntimeExceptionMapper;
import org.whispersystems.textsecuregcm.mappers.RateLimitExceededExceptionMapper;
Expand Down Expand Up @@ -357,15 +358,15 @@ public void putMediaBatchSuccess() throws VerificationFailedException {
.header("X-Signal-ZK-Auth-Signature", "aaa")
.put(Entity.json(new ArchiveController.CopyMediaBatchRequest(List.of(
new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "abc"),
new RemoteAttachment(3, "abc"),
100,
mediaIds[0],
TestRandomUtil.nextBytes(32),
TestRandomUtil.nextBytes(32),
TestRandomUtil.nextBytes(16)),

new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "def"),
new RemoteAttachment(3, "def"),
200,
mediaIds[1],
TestRandomUtil.nextBytes(32),
Expand Down Expand Up @@ -402,7 +403,7 @@ public void putMediaBatchPartialFailure() throws VerificationFailedException {

final List<ArchiveController.CopyMediaRequest> copyRequests = Arrays.stream(mediaIds)
.map(mediaId -> new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "abc"),
new RemoteAttachment(3, "abc"),
100,
mediaId,
TestRandomUtil.nextBytes(32),
Expand Down Expand Up @@ -458,15 +459,15 @@ public void copyMediaWithNegativeLength() throws VerificationFailedException {
.header("X-Signal-ZK-Auth-Signature", "aaa")
.put(Entity.json(new ArchiveController.CopyMediaBatchRequest(List.of(
new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "abc"),
new RemoteAttachment(3, "abc"),
1,
mediaIds[0],
TestRandomUtil.nextBytes(32),
TestRandomUtil.nextBytes(32),
TestRandomUtil.nextBytes(16)),

new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "def"),
new RemoteAttachment(3, "def"),
-1,
mediaIds[1],
TestRandomUtil.nextBytes(32),
Expand Down Expand Up @@ -639,7 +640,7 @@ public void invalidSourceAttachmentKey() throws VerificationFailedException {
.header("X-Signal-ZK-Auth", Base64.getEncoder().encodeToString(presentation.serialize()))
.header("X-Signal-ZK-Auth-Signature", "aaa")
.put(Entity.json(new ArchiveController.CopyMediaRequest(
new ArchiveController.RemoteAttachment(3, "invalid/urlBase64"),
new RemoteAttachment(3, "invalid/urlBase64"),
100,
TestRandomUtil.nextBytes(15),
TestRandomUtil.nextBytes(32),
Expand Down

0 comments on commit 0adaa33

Please sign in to comment.