Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import dsm.pick2024.domain.application.port.`in`.ApplicationFinderUseCase
import dsm.pick2024.domain.application.port.`in`.QueryMyApplicationUseCase
import dsm.pick2024.domain.application.presentation.dto.response.QueryMyApplicationResponse
import dsm.pick2024.domain.applicationstory.enums.Type
import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.domain.user.port.`in`.UserFacadeUseCase
import dsm.pick2024.infrastructure.s3.FileUtil
import dsm.pick2024.infrastructure.s3.PathList
Expand All @@ -22,7 +23,7 @@ class QueryMyApplicationService(
@Transactional(readOnly = true)
override fun queryMyApplication(): QueryMyApplicationResponse {
val user = userFacadeUseCase.currentUser()
val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(it, PathList.PROFILE) }
val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(FileNameVo(it), PathList.PROFILE) }
val application =
applicationFinderUseCase.findByUserIdAndStatusAndApplicationKindOrThrow(
Status.OK,
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/dsm/pick2024/domain/bug/AddBugService.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsm.pick2024.domain.bug

import dsm.pick2024.domain.bug.presentation.dto.request.BugRequest
import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.infrastructure.feign.client.DiscordBugClient
import dsm.pick2024.infrastructure.feign.client.dto.request.DiscordMessageRequest
import dsm.pick2024.infrastructure.s3.FileUtil
Expand Down Expand Up @@ -33,7 +34,7 @@ class AddBugService(
### 🔗 버그 내용
${request.content}
### 📄 이미지
${request.fileName?.map { fileUtil.generateObjectUrl(it, PathList.BUG) } ?: emptyList()}
${request.fileName?.map { fileUtil.generateObjectUrl(FileNameVo(it), PathList.BUG) } ?: emptyList()}
### 🧑🏻‍💻 버그 제보자
${SecurityContextHolder.getContext().authentication.name}
""".trimIndent()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dsm.pick2024.domain.timetable.domain.vo

import java.text.Normalizer

data class FileNameVo(val rawName: String) {
val value: String = Normalizer.normalize(rawName, Normalizer.Form.NFC)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsm.pick2024.domain.timetable.presentation.dto.response

import dsm.pick2024.domain.timetable.domain.Timetable
import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.infrastructure.s3.FileUtil
import dsm.pick2024.infrastructure.s3.PathList
import java.time.LocalDate
Expand All @@ -25,7 +26,7 @@ data class DayTimetableResponse(
}

val imageUrl =
fileUtil.generateObjectUrl("$subjectName.png", PathList.TIMETABLE)
fileUtil.generateObjectUrl(FileNameVo("$subjectName.png"), PathList.TIMETABLE)

dayTimetableResponses.add(PeriodTimetableResponse(id, period, subjectName, imageUrl))
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dsm.pick2024.domain.timetable.service

import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.domain.timetable.port.`in`.QueryTeacherTimetableUseCase
import dsm.pick2024.domain.timetable.port.out.QueryTimeTablePort
import dsm.pick2024.domain.timetable.presentation.dto.response.DayTimetableResponse
Expand Down Expand Up @@ -32,7 +33,10 @@ class QueryTeacherTimetableService(

val timetables = (1..7).mapNotNull { period ->
tables.find { it.period == period }?.let { timetable ->
val imageUrl = fileUtil.generateObjectUrl("${timetable.subjectName}.png", PathList.TIMETABLE)
val imageUrl = fileUtil.generateObjectUrl(
FileNameVo("${timetable.subjectName}.png"),
PathList.TIMETABLE
)
Comment on lines +35 to +38
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 lint에서 짤려서 내린건가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fileNameVo 말씀하시는 거면 의존성 관리가 안되어서 없앴습니다.

PeriodTimetableResponse(timetable.id!!, period, timetable.subjectName, imageUrl)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dsm.pick2024.domain.user.service

import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.domain.user.port.`in`.QueryUserDetailsInfoUseCase
import dsm.pick2024.domain.user.port.`in`.UserFacadeUseCase
import dsm.pick2024.domain.user.presentation.dto.response.QueryUserDetailsInfoResponse
Expand All @@ -18,7 +19,7 @@ class QueryUserDetaileInfoService(
override fun queryUserDetailsInfo(): QueryUserDetailsInfoResponse {
val user = userFacadeUseCase.currentUser()

val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(it, PathList.PROFILE) }
val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(FileNameVo(it), PathList.PROFILE) }

return QueryUserDetailsInfoResponse(
profile = profileUrl?.substringBefore("?"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dsm.pick2024.domain.user.service

import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.domain.user.port.`in`.QueryUserSimpleInfoUseCase
import dsm.pick2024.domain.user.port.`in`.UserFacadeUseCase
import dsm.pick2024.domain.user.presentation.dto.response.QueryUserSimpleInfoResponse
Expand All @@ -17,14 +18,14 @@ class QueryUserSimpleInfoService(
@Transactional(readOnly = true)
override fun queryUserSimpleInfo(): QueryUserSimpleInfoResponse {
val user = userFacadeUseCase.currentUser()
val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(it, PathList.PROFILE) }
val profileUrl = user.profile?.let { fileUtil.generateObjectUrl(FileNameVo(it), PathList.PROFILE) }

return QueryUserSimpleInfoResponse(
user.name,
user.grade,
user.classNum,
user.num,
profileUrl?.substringBefore("?")
profileUrl
)
}
}
5 changes: 3 additions & 2 deletions src/main/kotlin/dsm/pick2024/infrastructure/s3/FileUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.amazonaws.services.s3.model.CannedAccessControlList
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest
import com.amazonaws.services.s3.model.ObjectMetadata
import com.amazonaws.services.s3.model.PutObjectRequest
import dsm.pick2024.domain.timetable.domain.vo.FileNameVo
import dsm.pick2024.infrastructure.s3.exception.BadFileExtensionException
import dsm.pick2024.infrastructure.s3.exception.EmptyFileException
import org.springframework.beans.factory.annotation.Value
Expand Down Expand Up @@ -53,15 +54,15 @@ class FileUtil(
amazonS3.deleteObject(bucketName, path + objectName)
}

fun generateObjectUrl(fileName: String, path: String): String {
fun generateObjectUrl(fileName: FileNameVo, path: String): String {
val expiration = Date().apply {
time += s3Exp.toLong()
}

return amazonS3.generatePresignedUrl(
GeneratePresignedUrlRequest(
bucketName,
"${path}$fileName"
"${path}${fileName.value}"
).withMethod(HttpMethod.GET).withExpiration(expiration)
).toString()
}
Expand Down
1 change: 0 additions & 1 deletion src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ firebase:
url:
host: ${FIREBASE_HOST}
path: ${FIREBASE_PATH}
key: ${FIREBASE_KEY_JSON}
credentials: ${FIREBASE_CREDENTIALS_URL}

google:
Expand Down