콘텐츠 URL 생성 API
This commit is contained in:
		| @@ -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 | ||||
| ) | ||||
		Reference in New Issue
	
	Block a user