콘텐츠 메인, 콘텐츠 업로드 페이지 추가
This commit is contained in:
182
SodaLive/Sources/Content/ContentApi.swift
Normal file
182
SodaLive/Sources/Content/ContentApi.swift
Normal file
@@ -0,0 +1,182 @@
|
||||
//
|
||||
// ContentApi.swift
|
||||
// SodaLive
|
||||
//
|
||||
// Created by klaus on 2023/08/11.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Moya
|
||||
|
||||
enum ContentApi {
|
||||
case getAudioContentList(userId: Int, page: Int, size: Int, sort: ContentListViewModel.Sort)
|
||||
case getAudioContentDetail(audioContentId: Int)
|
||||
case likeContent(request: PutAudioContentLikeRequest)
|
||||
case registerComment(request: RegisterAudioContentCommentRequest)
|
||||
case orderAudioContent(request: OrderRequest)
|
||||
case getOrderList(page: Int, size: Int)
|
||||
case addAllPlaybackTracking(request: AddAllPlaybackTrackingRequest)
|
||||
case getAudioContentThemeList
|
||||
case uploadAudioContent(parameters: [MultipartFormData])
|
||||
case getAudioContentCommentList(audioContentId: Int, page: Int, size: Int)
|
||||
case getAudioContentCommentReplyList(commentId: Int, page: Int, size: Int)
|
||||
case deleteAudioContent(audioContentId: Int)
|
||||
case modifyAudioContent(parameters: [MultipartFormData])
|
||||
case getMain
|
||||
case getNewContentOfTheme(theme: String)
|
||||
case donation(request: AudioContentDonationRequest)
|
||||
}
|
||||
|
||||
extension ContentApi: TargetType {
|
||||
var baseURL: URL {
|
||||
return URL(string: BASE_URL)!
|
||||
}
|
||||
|
||||
var path: String {
|
||||
switch self {
|
||||
case .getAudioContentList:
|
||||
return "/audio-content"
|
||||
|
||||
case .getAudioContentDetail(let audioContentId):
|
||||
return "/audio-content/\(audioContentId)"
|
||||
|
||||
case .likeContent:
|
||||
return "/audio-content/like"
|
||||
|
||||
case .registerComment:
|
||||
return "/audio-content/comment"
|
||||
|
||||
case .orderAudioContent:
|
||||
return "/order/audio-content"
|
||||
|
||||
case .getOrderList:
|
||||
return "/order/audio-content"
|
||||
|
||||
case .addAllPlaybackTracking:
|
||||
return "/audio-content/playback-tracking"
|
||||
|
||||
case .getAudioContentThemeList:
|
||||
return "/audio-content/theme"
|
||||
|
||||
case .uploadAudioContent:
|
||||
return "/audio-content"
|
||||
|
||||
case .getAudioContentCommentList(let audioContentId, _, _):
|
||||
return "/audio-content/\(audioContentId)/comment"
|
||||
|
||||
case .getAudioContentCommentReplyList(let commentId, _, _):
|
||||
return "/audio-content/comment/\(commentId)"
|
||||
|
||||
case .deleteAudioContent(let audioContentId):
|
||||
return "/audio-content/\(audioContentId)"
|
||||
|
||||
case .modifyAudioContent:
|
||||
return "/audio-content"
|
||||
|
||||
case .getMain:
|
||||
return "/audio-content/main"
|
||||
|
||||
case .getNewContentOfTheme:
|
||||
return "/audio-content/main/new"
|
||||
|
||||
case .donation:
|
||||
return "/audio-content/donation"
|
||||
}
|
||||
}
|
||||
|
||||
var method: Moya.Method {
|
||||
switch self {
|
||||
case .getAudioContentList, .getAudioContentDetail, .getOrderList, .getAudioContentThemeList, .getAudioContentCommentList, .getAudioContentCommentReplyList, .getMain, .getNewContentOfTheme:
|
||||
return .get
|
||||
|
||||
case .likeContent, .modifyAudioContent:
|
||||
return .put
|
||||
|
||||
case .registerComment, .orderAudioContent, .addAllPlaybackTracking, .uploadAudioContent, .donation:
|
||||
return .post
|
||||
|
||||
case .deleteAudioContent:
|
||||
return .delete
|
||||
}
|
||||
}
|
||||
|
||||
var task: Moya.Task {
|
||||
switch self {
|
||||
case .getAudioContentList(let userId, let page, let size, let sort):
|
||||
let parameters = [
|
||||
"creator-id": userId,
|
||||
"page": page - 1,
|
||||
"size": size,
|
||||
"sort-type": sort
|
||||
] as [String : Any]
|
||||
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .getAudioContentDetail:
|
||||
let parameters = ["timezone": TimeZone.current.identifier] as [String : Any]
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .likeContent(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
|
||||
case .registerComment(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
|
||||
case .orderAudioContent(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
|
||||
case .getOrderList(let page, let size):
|
||||
let parameters = [
|
||||
"page": page - 1,
|
||||
"size": size
|
||||
] as [String : Any]
|
||||
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .addAllPlaybackTracking(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
|
||||
case .getAudioContentThemeList, .getMain:
|
||||
return .requestPlain
|
||||
|
||||
case .uploadAudioContent(let parameters):
|
||||
return .uploadMultipart(parameters)
|
||||
|
||||
case .modifyAudioContent(let parameters):
|
||||
return .uploadMultipart(parameters)
|
||||
|
||||
case .getAudioContentCommentList(_, let page, let size):
|
||||
let parameters = [
|
||||
"page": page - 1,
|
||||
"size": size,
|
||||
"timezone": TimeZone.current.identifier
|
||||
] as [String : Any]
|
||||
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .getAudioContentCommentReplyList(_, let page, let size):
|
||||
let parameters = [
|
||||
"page": page - 1,
|
||||
"size": size,
|
||||
"timezone": TimeZone.current.identifier
|
||||
] as [String : Any]
|
||||
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .deleteAudioContent:
|
||||
return .requestPlain
|
||||
|
||||
case .getNewContentOfTheme(let theme):
|
||||
let parameters = ["theme": theme] as [String : Any]
|
||||
|
||||
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
|
||||
|
||||
case .donation(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
}
|
||||
}
|
||||
|
||||
var headers: [String : String]? {
|
||||
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user