BJ-314: rm md5

This commit is contained in:
a.karlov 2018-12-04 18:33:20 +03:00
parent 53a0d7625e
commit 844f1aad6b
2 changed files with 18 additions and 32 deletions

View File

@ -16,7 +16,6 @@ import com.rbkmoney.file.storage.util.DamselUtil;
import com.rbkmoney.geck.common.util.TypeUtil; import com.rbkmoney.geck.common.util.TypeUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder; import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder;
@ -42,7 +41,6 @@ public class AmazonS3StorageService implements StorageService {
private static final String FILEDATA_FILE_ID = "x-rbkmoney-filedata-file-id"; private static final String FILEDATA_FILE_ID = "x-rbkmoney-filedata-file-id";
private static final String FILEDATA_FILE_NAME = "x-rbkmoney-filedata-file-name"; private static final String FILEDATA_FILE_NAME = "x-rbkmoney-filedata-file-name";
private static final String FILEDATA_CREATED_AT = "x-rbkmoney-filedata-created-at"; private static final String FILEDATA_CREATED_AT = "x-rbkmoney-filedata-created-at";
private static final String FILEDATA_MD_5 = "x-rbkmoney-filedata-md5";
private static final String FILEDATA_METADATA = "x-rbkmoney-filedata-metadata-"; private static final String FILEDATA_METADATA = "x-rbkmoney-filedata-metadata-";
private final TransferManager transferManager; private final TransferManager transferManager;
@ -81,7 +79,6 @@ public class AmazonS3StorageService implements StorageService {
fileId, fileId,
fileName, fileName,
createdAt, createdAt,
"",
metadata metadata
); );
@ -126,7 +123,6 @@ public class AmazonS3StorageService implements StorageService {
ObjectMetadata objectMetadata = object.getObjectMetadata(); ObjectMetadata objectMetadata = object.getObjectMetadata();
objectMetadata.addUserMetadata(FILE_UPLOADED, "true"); objectMetadata.addUserMetadata(FILE_UPLOADED, "true");
objectMetadata.addUserMetadata(FILEDATA_MD_5, calculateMd5(multipartFile.getBytes()));
objectMetadata.setContentLength(multipartFile.getSize()); objectMetadata.setContentLength(multipartFile.getSize());
PutObjectRequest putObjectRequest = new PutObjectRequest( PutObjectRequest putObjectRequest = new PutObjectRequest(
@ -220,7 +216,6 @@ public class AmazonS3StorageService implements StorageService {
String fileId = getUserMetadataParameter(objectMetadata, FILEDATA_FILE_ID); String fileId = getUserMetadataParameter(objectMetadata, FILEDATA_FILE_ID);
String fileName = getUserMetadataParameter(objectMetadata, FILEDATA_FILE_NAME); String fileName = getUserMetadataParameter(objectMetadata, FILEDATA_FILE_NAME);
String createdAt = getUserMetadataParameter(objectMetadata, FILEDATA_CREATED_AT); String createdAt = getUserMetadataParameter(objectMetadata, FILEDATA_CREATED_AT);
String md5 = getUserMetadataParameter(objectMetadata, FILEDATA_MD_5);
Map<String, com.rbkmoney.damsel.msgpack.Value> metadata = objectMetadata.getUserMetadata().entrySet().stream() Map<String, com.rbkmoney.damsel.msgpack.Value> metadata = objectMetadata.getUserMetadata().entrySet().stream()
.filter(entry -> entry.getKey().startsWith(FILEDATA_METADATA) && entry.getValue() != null) .filter(entry -> entry.getKey().startsWith(FILEDATA_METADATA) && entry.getValue() != null)
@ -235,7 +230,7 @@ public class AmazonS3StorageService implements StorageService {
fileId, fileId,
bucketName bucketName
); );
return new FileData(fileId, fileName, createdAt, md5, metadata); return new FileData(fileId, fileName, createdAt, metadata);
} }
private URL generatePresignedUrl(String fileId, Instant expirationTime, HttpMethod httpMethod) throws StorageException { private URL generatePresignedUrl(String fileId, Instant expirationTime, HttpMethod httpMethod) throws StorageException {
@ -300,7 +295,6 @@ public class AmazonS3StorageService implements StorageService {
objectMetadata.addUserMetadata(FILEDATA_FILE_ID, fileData.getFileId()); objectMetadata.addUserMetadata(FILEDATA_FILE_ID, fileData.getFileId());
objectMetadata.addUserMetadata(FILEDATA_FILE_NAME, fileData.getFileName()); objectMetadata.addUserMetadata(FILEDATA_FILE_NAME, fileData.getFileName());
objectMetadata.addUserMetadata(FILEDATA_CREATED_AT, fileData.getCreatedAt()); objectMetadata.addUserMetadata(FILEDATA_CREATED_AT, fileData.getCreatedAt());
objectMetadata.addUserMetadata(FILEDATA_MD_5, fileData.getMd5());
fileData.getMetadata().forEach( fileData.getMetadata().forEach(
(key, value) -> objectMetadata.addUserMetadata(FILEDATA_METADATA + key, DamselUtil.toJsonString(value)) (key, value) -> objectMetadata.addUserMetadata(FILEDATA_METADATA + key, DamselUtil.toJsonString(value))
); );
@ -354,8 +348,4 @@ public class AmazonS3StorageService implements StorageService {
throw new StorageFileNotFoundException(String.format(objectType + " is null, fileId='%s', bucketId='%s'", fileId, bucketName)); throw new StorageFileNotFoundException(String.format(objectType + " is null, fileId='%s', bucketId='%s'", fileId, bucketName));
} }
} }
private String calculateMd5(byte[] data) throws IOException {
return DigestUtils.md5Hex(data);
}
} }

View File

@ -2,7 +2,6 @@ package com.rbkmoney.file.storage;
import com.rbkmoney.woody.thrift.impl.http.THSpawnClientBuilder; import com.rbkmoney.woody.thrift.impl.http.THSpawnClientBuilder;
import org.junit.Before; import org.junit.Before;
import org.junit.ClassRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.util.EnvironmentTestUtils; import org.springframework.boot.test.util.EnvironmentTestUtils;
@ -12,15 +11,12 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
import java.io.IOException; import java.io.IOException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
@ -46,21 +42,21 @@ public abstract class AbstractIntegrationTest {
protected FileStorageSrv.Iface client; protected FileStorageSrv.Iface client;
@ClassRule // @ClassRule
public static GenericContainer cephContainer = new GenericContainer("dr.rbkmoney.com/ceph-demo:latest") // public static GenericContainer cephContainer = new GenericContainer("dr.rbkmoney.com/ceph-demo:latest")
.withEnv("RGW_NAME", "localhost") // .withEnv("RGW_NAME", "localhost")
.withEnv("NETWORK_AUTO_DETECT", "4") // .withEnv("NETWORK_AUTO_DETECT", "4")
.withEnv("CEPH_DEMO_UID", "ceph-test") // .withEnv("CEPH_DEMO_UID", "ceph-test")
.withEnv("CEPH_DEMO_ACCESS_KEY", AWS_ACCESS_KEY) // .withEnv("CEPH_DEMO_ACCESS_KEY", AWS_ACCESS_KEY)
.withEnv("CEPH_DEMO_SECRET_KEY", AWS_SECRET_KEY) // .withEnv("CEPH_DEMO_SECRET_KEY", AWS_SECRET_KEY)
.withEnv("CEPH_DEMO_BUCKET", BUCKET_NAME) // .withEnv("CEPH_DEMO_BUCKET", BUCKET_NAME)
.withExposedPorts(5000, 80) // .withExposedPorts(5000, 80)
.waitingFor( // .waitingFor(
new HttpWaitStrategy() // new HttpWaitStrategy()
.forPath("/api/v0.1/health") // .forPath("/api/v0.1/health")
.forStatusCode(200) // .forStatusCode(200)
.withStartupTimeout(Duration.ofMinutes(10)) // .withStartupTimeout(Duration.ofMinutes(10))
); // );
public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override @Override
@ -68,9 +64,9 @@ public abstract class AbstractIntegrationTest {
EnvironmentTestUtils.addEnvironment( EnvironmentTestUtils.addEnvironment(
"testcontainers", "testcontainers",
configurableApplicationContext.getEnvironment(), configurableApplicationContext.getEnvironment(),
"storage.endpoint=" + cephContainer.getContainerIpAddress() + ":" + cephContainer.getMappedPort(80), // "storage.endpoint=" + cephContainer.getContainerIpAddress() + ":" + cephContainer.getMappedPort(80),
// в случае, если поднят локальный сторедж в контейнере // в случае, если поднят локальный сторедж в контейнере
// "storage.endpoint=localhost:32827", "storage.endpoint=localhost:32827",
"storage.signingRegion=" + SIGNING_REGION, "storage.signingRegion=" + SIGNING_REGION,
"storage.accessKey=" + AWS_ACCESS_KEY, "storage.accessKey=" + AWS_ACCESS_KEY,
"storage.secretKey=" + AWS_SECRET_KEY, "storage.secretKey=" + AWS_SECRET_KEY,