// // ContentRepository.swift // SodaLive // // Created by klaus on 2023/08/11. // import Foundation import CombineMoya import Combine import Moya final class ContentRepository { private let api = MoyaProvider() func getAudioContentList(userId: Int, page: Int, size: Int, sort: ContentListViewModel.Sort) -> AnyPublisher { return api.requestPublisher(.getAudioContentList(userId: userId, page: page, size: size, sort: sort)) } func getAudioContentDetail(audioContentId: Int) -> AnyPublisher { return api.requestPublisher(.getAudioContentDetail(audioContentId: audioContentId)) } func likeContent(audioContentId: Int) -> AnyPublisher { return api.requestPublisher(.likeContent(request: PutAudioContentLikeRequest(audioContentId: audioContentId))) } func registerComment(audioContentId: Int, comment: String, parentId: Int? = nil) -> AnyPublisher { return api.requestPublisher(.registerComment(request: RegisterAudioContentCommentRequest(comment: comment, audioContentId: audioContentId, parentId: parentId))) } func orderAudioContent(audioContentId: Int, orderType: OrderType) -> AnyPublisher { return api.requestPublisher(.orderAudioContent(request: OrderRequest(audioContentId: audioContentId, orderType: orderType))) } func getOrderList(page: Int, size: Int) -> AnyPublisher { return api.requestPublisher(.getOrderList(page: page, size: size)) } func addAllPlaybackTracking(request: AddAllPlaybackTrackingRequest) -> AnyPublisher { return api.requestPublisher(.addAllPlaybackTracking(request: request)) } func getAudioContentThemeList() -> AnyPublisher { return api.requestPublisher(.getAudioContentThemeList) } func uploadAudioContent(parameters: [MultipartFormData]) -> AnyPublisher { return api.requestPublisher(.uploadAudioContent(parameters: parameters)) } func getAudioContentCommentList(audioContentId: Int, page: Int, size: Int) -> AnyPublisher { return api.requestPublisher(.getAudioContentCommentList(audioContentId: audioContentId, page: page, size: size)) } func getAudioContentCommentReplyList(commentId: Int, page: Int, size: Int) -> AnyPublisher { return api.requestPublisher(.getAudioContentCommentReplyList(commentId: commentId, page: page, size: size)) } func deleteAudioContent(audioContentId: Int) -> AnyPublisher { return api.requestPublisher(.deleteAudioContent(audioContentId: audioContentId)) } func modifyAudioContent(parameters: [MultipartFormData]) -> AnyPublisher { return api.requestPublisher(.modifyAudioContent(parameters: parameters)) } func getMain() -> AnyPublisher { return api.requestPublisher(.getMain) } func getNewContentOfTheme(theme: String) -> AnyPublisher { return api.requestPublisher(.getNewContentOfTheme(theme: theme)) } func donation(contentId: Int, coin: Int, comment: String) -> AnyPublisher { return api.requestPublisher(.donation(request: AudioContentDonationRequest(audioContentId: contentId, donationCoin: coin, comment: comment))) } }