Skip to content

Commit

Permalink
[DPMBE-112] 이미지 업로드 성공 요청시 url을 리턴해준다 (#181)
Browse files Browse the repository at this point in the history
* feat: 이미지 업로드 성공 요청시 url을 리턴해준다

* style: 정적 팩토리 메서드 사용
  • Loading branch information
kdomo committed Jul 10, 2023
1 parent d1a466a commit ca880bd
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.depromeet.whatnow.api.image.controller

import com.depromeet.whatnow.api.image.dto.ImageCommentElement
import com.depromeet.whatnow.api.image.dto.ImageDto
import com.depromeet.whatnow.api.image.dto.ImageUrlResponse
import com.depromeet.whatnow.api.image.dto.PromiseImageDetailResponse
import com.depromeet.whatnow.api.image.dto.PromiseImageResponse
Expand Down Expand Up @@ -50,8 +51,8 @@ class ImageController(
@PathVariable imageKey: String,
@RequestParam fileExtension: ImageFileExtension,
@RequestParam promiseImageCommentType: PromiseImageCommentType,
) {
successUseCase.promiseUploadImageSuccess(promiseId, imageKey, fileExtension, promiseImageCommentType)
): ImageDto {
return successUseCase.promiseUploadImageSuccess(promiseId, imageKey, fileExtension, promiseImageCommentType)
}

@Tag(name = "6-1 [약속 이미지]")
Expand Down Expand Up @@ -94,7 +95,7 @@ class ImageController(
@Tag(name = "6-2 [유저 이미지]")
@Operation(summary = "유저 프로필 이미지 업로드 성공 요청")
@PostMapping("/{imageKey}/users/me")
fun userUploadImageSuccess(@PathVariable imageKey: String, @RequestParam fileExtension: ImageFileExtension) {
successUseCase.userUploadImageSuccess(imageKey, fileExtension)
fun userUploadImageSuccess(@PathVariable imageKey: String, @RequestParam fileExtension: ImageFileExtension): ImageDto {
return successUseCase.userUploadImageSuccess(imageKey, fileExtension)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.depromeet.whatnow.api.image.dto

data class ImageDto(
val imageUrl: String,
) {
companion object {
fun from(imageUrl: String): ImageDto {
return ImageDto(imageUrl)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.depromeet.whatnow.api.image.usecase

import com.depromeet.whatnow.annotation.UseCase
import com.depromeet.whatnow.api.image.dto.ImageDto
import com.depromeet.whatnow.config.s3.ImageFileExtension
import com.depromeet.whatnow.config.security.SecurityUtils
import com.depromeet.whatnow.domains.image.domain.PromiseImageCommentType
Expand All @@ -15,13 +16,21 @@ class ImageUploadSuccessUseCase(
imageKey: String,
fileExtension: ImageFileExtension,
promiseImageCommentType: PromiseImageCommentType,
) {
): ImageDto {
val currentUserId: Long = SecurityUtils.currentUserId
imageDomainService.promiseImageUploadSuccess(currentUserId, promiseId, imageKey, fileExtension, promiseImageCommentType)
val imageUrl = imageDomainService.promiseImageUploadSuccess(
currentUserId,
promiseId,
imageKey,
fileExtension,
promiseImageCommentType,
)
return ImageDto.from(imageUrl)
}

fun userUploadImageSuccess(imageKey: String, fileExtension: ImageFileExtension) {
fun userUploadImageSuccess(imageKey: String, fileExtension: ImageFileExtension): ImageDto {
val currentUserId: Long = SecurityUtils.currentUserId
imageDomainService.userImageUploadSuccess(currentUserId, imageKey, fileExtension)
val imageUrl = imageDomainService.userImageUploadSuccess(currentUserId, imageKey, fileExtension)
return ImageDto.from(imageUrl)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.kotlin.given
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.core.authority.SimpleGrantedAuthority
import org.springframework.security.core.context.SecurityContextHolder
Expand All @@ -33,8 +34,9 @@ class PromiseImageUploadSuccessUseCaseTest {
@Test
fun `약속 이미지 업로드 성공 요청시 정상적이라면 에러가 발생하지 않는다`() {
// given
given(imageDomainService.promiseImageUploadSuccess(1, 1, "imageKey", ImageFileExtension.JPG, PromiseImageCommentType.SORRY_LATE))
.willReturn("imageUrl")
// when

// then
assertThatCode {
imageUploadSuccessUseCase.promiseUploadImageSuccess(1, "imageKey", ImageFileExtension.JPG, PromiseImageCommentType.SORRY_LATE)
Expand All @@ -44,7 +46,8 @@ class PromiseImageUploadSuccessUseCaseTest {
@Test
fun `유저 프로필 업로드 성공 요청시 정상적이라면 에러가 발생하지 않는다`() {
// given

given(imageDomainService.userImageUploadSuccess(1, "imageKey", ImageFileExtension.JPG))
.willReturn("imageUrl")
// when

// then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,22 @@ class ImageDomainService(
imageKey: String,
fileExtension: ImageFileExtension,
promiseImageCommentType: PromiseImageCommentType,
) {
): String {
val promiseUser = promiseUserAdapter.findByPromiseIdAndUserId(promiseId, userId)
validatePromiseUserType(promiseUser.promiseUserType!!, promiseImageCommentType)

val imageUrl = IMAGE_DOMAIN + "/" + springEnvironmentHelper.activeProfile + "/" + "promise/$promiseId/$imageKey"
promiseImageAdapter.save(
PromiseImage.of(promiseId, userId, imageUrl, imageKey, fileExtension, promiseImageCommentType),
)
return imageUrl
}

@Transactional
fun userImageUploadSuccess(userId: Long, imageKey: String, fileExtension: ImageFileExtension) {
fun userImageUploadSuccess(userId: Long, imageKey: String, fileExtension: ImageFileExtension): String {
val imageUrl = IMAGE_DOMAIN + "/" + springEnvironmentHelper.activeProfile + "/" + "user/$userId/$imageKey"
userImageAdapter.save(UserImage.of(userId, imageUrl, imageKey, fileExtension))
return imageUrl
}

private fun validatePromiseUserType(promiseUserType: PromiseUserType, promiseImageCommentType: PromiseImageCommentType) {
Expand Down

0 comments on commit ca880bd

Please sign in to comment.