Skip to content

Commit

Permalink
Merge pull request #105 from Guzzing/feat/profile
Browse files Browse the repository at this point in the history
[Feat/profile] 프로필 이미지 URI 할당 방식 변경
  • Loading branch information
onetuks authored Dec 2, 2023
2 parents d598f89 + 7cb3354 commit 855cd8b
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 108 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
package org.guzzing.studayserver.domain.child.provider;

import static java.nio.charset.StandardCharsets.UTF_8;

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.text.MessageFormat;
import java.util.Base64;
import java.util.List;
import java.util.Objects;
import java.util.Random;
import lombok.extern.slf4j.Slf4j;
import org.guzzing.studayserver.global.config.S3Config;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
@Component
public class ProfileImageProvider {

Expand All @@ -22,16 +29,13 @@ public class ProfileImageProvider {

private final S3Config s3Config;
private final AmazonS3 s3Client;
private final Base62Provider base62Provider;

public ProfileImageProvider(
final S3Config s3Config,
final AmazonS3 s3Client,
final Base62Provider base62Provider
final AmazonS3 s3Client
) {
this.s3Config = s3Config;
this.s3Client = s3Client;
this.base62Provider = base62Provider;
}

public String provideDefaultProfileImageURI(final List<String> existsImageUris) {
Expand All @@ -47,19 +51,25 @@ public String provideDefaultProfileImageURI(final List<String> existsImageUris)
}
}

public String uploadProfileImage(final Long childId, final MultipartFile multipartFile) {
final String encodedFileName = base62Provider.encode(childId);
final String profileImageURI = makeProfileImageURI(s3Config.getCustomUrl(), encodedFileName);

public String uploadProfileImage(final MultipartFile multipartFile) {
try {
final String originFileName = Objects.requireNonNull(multipartFile.getOriginalFilename());
final byte[] encodedFileName = Base64.getEncoder().encode(originFileName.getBytes());
final String profileImageURI = makeProfileImageURI(s3Config.getCustomUrl(),
new String(encodedFileName, UTF_8));

final PutObjectRequest putObjectRequest = getPutObjectRequest(multipartFile, profileImageURI);

s3Client.putObject(putObjectRequest);

return profileImageURI;
} catch (IOException e) {
throw new RuntimeException("해당하는 파일이 없습니다.");
log.warn("해당하는 파일이 없습니다.");
throw new UncheckedIOException(e);
} catch (NullPointerException e) {
log.warn("이미지 파일 이름이 없습니다.");
throw e;
}

return profileImageURI;
}

private PutObjectRequest getPutObjectRequest(MultipartFile multipartFile, String profileImageURI)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public ChildProfileImagePatchResult modifyProfileImage(final Long childId, final
final Child child = childRepository.findById(childId)
.orElseThrow(() -> new EntityNotFoundException("존재하지 않는 아이입니다."));

final String profileImageUri = profileImageProvider.uploadProfileImage(childId, file);
final String profileImageUri = profileImageProvider.uploadProfileImage(file);

child.updateProfileImageUri(profileImageUri);

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ void modifyProfileImage_ChildIdAndMultipartFile_ChangeProfileImageUri() {
Child mockChild = new Child("원우주니어", Grade.MIDDLE_SCHOOL_3.getDescription(), "imageUrl");

given(childRepository.findById(anyLong())).willReturn(Optional.of(mockChild));
given(profileImageProvider.uploadProfileImage(anyLong(), any())).willReturn("YAAAAAAA");
given(profileImageProvider.uploadProfileImage(any())).willReturn("YAAAAAAA");

final String fileName = "file.png";
final byte[] content = "file-content".getBytes();
Expand Down

0 comments on commit 855cd8b

Please sign in to comment.