콘텐츠 URL 생성 API
This commit is contained in:
parent
ba17095536
commit
bf62482137
|
@ -134,6 +134,15 @@ class AudioContentController(private val service: AudioContentService) {
|
|||
ApiResponse.ok(service.getDetail(id = id, member = member, timezone = timezone))
|
||||
}
|
||||
|
||||
@GetMapping("/{id}/generate-url")
|
||||
fun generateUrl(
|
||||
@PathVariable id: Long,
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||
) = run {
|
||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||
ApiResponse.ok(service.generateUrl(contentId = id, member = member))
|
||||
}
|
||||
|
||||
@PostMapping("/playback-tracking")
|
||||
fun addAllPlaybackTracking(
|
||||
@RequestBody request: AddAllPlaybackTrackingRequest,
|
||||
|
|
|
@ -827,4 +827,25 @@ class AudioContentService(
|
|||
|
||||
pinContent.isActive = false
|
||||
}
|
||||
|
||||
fun generateUrl(contentId: Long, member: Member): GenerateUrlResponse {
|
||||
val audioContent = repository.findByIdOrNull(contentId)
|
||||
?: throw SodaException("잘못된 콘텐츠 입니다.\n다시 시도해 주세요.")
|
||||
|
||||
val isExistsAudioContent = orderRepository.isExistOrdered(
|
||||
memberId = member.id!!,
|
||||
contentId = audioContent.id!!
|
||||
)
|
||||
|
||||
val contentUrl = if (isExistsAudioContent) {
|
||||
audioContentCloudFront.generateSignedURL(
|
||||
resourcePath = audioContent.content!!,
|
||||
expirationTime = 1000 * 60 * 60 * (audioContent.duration!!.split(":")[0].toLong() + 2)
|
||||
)
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
return GenerateUrlResponse(contentUrl)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package kr.co.vividnext.sodalive.content
|
||||
|
||||
data class GenerateUrlResponse(
|
||||
val contentUrl: String
|
||||
)
|
Loading…
Reference in New Issue