콘텐츠 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))
|
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")
|
@PostMapping("/playback-tracking")
|
||||||
fun addAllPlaybackTracking(
|
fun addAllPlaybackTracking(
|
||||||
@RequestBody request: AddAllPlaybackTrackingRequest,
|
@RequestBody request: AddAllPlaybackTrackingRequest,
|
||||||
|
|
|
@ -827,4 +827,25 @@ class AudioContentService(
|
||||||
|
|
||||||
pinContent.isActive = false
|
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