From 574623987356ef12ea9b094da09345f2c163a26b Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 23 Jun 2026 15:50:11 +0900 Subject: [PATCH] =?UTF-8?q?feat(content):=20=EC=B6=94=EC=B2=9C=20API=20?= =?UTF-8?q?=EA=B3=84=EC=95=BD=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/data/AudioRecommendationsApi.kt | 13 +++++ .../data/AudioRecommendationsModels.kt | 55 +++++++++++++++++++ .../data/AudioRecommendationsRepository.kt | 5 ++ 3 files changed, 73 insertions(+) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsApi.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsModels.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsRepository.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsApi.kt new file mode 100644 index 00000000..c003006e --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsApi.kt @@ -0,0 +1,13 @@ +package kr.co.vividnext.sodalive.v2.main.content.data + +import io.reactivex.rxjava3.core.Single +import kr.co.vividnext.sodalive.common.ApiResponse +import retrofit2.http.GET +import retrofit2.http.Header + +interface AudioRecommendationsApi { + @GET("/api/v2/audio/recommendations") + fun getRecommendations( + @Header("Authorization") authHeader: String + ): Single> +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsModels.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsModels.kt new file mode 100644 index 00000000..4b159b07 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsModels.kt @@ -0,0 +1,55 @@ +package kr.co.vividnext.sodalive.v2.main.content.data + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kr.co.vividnext.sodalive.settings.event.EventItem + +@Keep +data class AudioRecommendationsResponse( + @SerializedName("banners") val banners: List, + @SerializedName("originalSeries") val originalSeries: List, + @SerializedName("latestAudios") val latestAudios: List, + @SerializedName("newAndHotAudios") val newAndHotAudios: List, + @SerializedName("freeAudios") val freeAudios: List, + @SerializedName("pointAudios") val pointAudios: List, + @SerializedName("mostCommentedAudios") val mostCommentedAudios: List, + @SerializedName("recommendedAudios") val recommendedAudios: List +) + +@Keep +data class AudioBannerResponse( + @SerializedName("imageUrl") val imageUrl: String, + @SerializedName("eventItem") val eventItem: EventItem?, + @SerializedName("creatorId") val creatorId: Long?, + @SerializedName("seriesId") val seriesId: Long?, + @SerializedName("link") val link: String? +) + +@Keep +data class OriginalSeriesResponse( + @SerializedName("seriesId") val seriesId: Long, + @SerializedName("coverImageUrl") val coverImageUrl: String? +) + +@Keep +data class AudioCardResponse( + @SerializedName("audioContentId") val audioContentId: Long, + @SerializedName("title") val title: String, + @SerializedName("duration") val duration: String?, + @SerializedName("imageUrl") val imageUrl: String?, + @SerializedName("price") val price: Int, + @SerializedName("isAdult") val isAdult: Boolean, + @SerializedName("isPointAvailable") val isPointAvailable: Boolean, + @SerializedName("isFirstContent") val isFirstContent: Boolean, + @SerializedName("isOriginalSeries") val isOriginalSeries: Boolean, + @SerializedName("creatorNickname") val creatorNickname: String +) + +@Keep +data class CommentedAudioResponse( + @SerializedName("audioContentId") val audioContentId: Long, + @SerializedName("title") val title: String, + @SerializedName("imageUrl") val imageUrl: String?, + @SerializedName("latestComment") val latestComment: String, + @SerializedName("latestCommentWriterProfileImageUrl") val latestCommentWriterProfileImageUrl: String +) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsRepository.kt new file mode 100644 index 00000000..513433a2 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/AudioRecommendationsRepository.kt @@ -0,0 +1,5 @@ +package kr.co.vividnext.sodalive.v2.main.content.data + +class AudioRecommendationsRepository(private val api: AudioRecommendationsApi) { + fun getRecommendations(token: String) = api.getRecommendations(authHeader = token) +}