// // SeriesMainApi.swift // SodaLive // // Created by klaus on 11/14/25. // import Foundation import Moya enum SeriesMainApi { case fetchHome(isAdultContentVisible: Bool, contentType: ContentType) case getRecommendSeriesList(isAdultContentVisible: Bool, contentType: ContentType) case getDayOfWeekSeriesList(dayOfWeek: SeriesPublishedDaysOfWeek, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int) case getGenreList(isAdultContentVisible: Bool, contentType: ContentType) case getSeriesListByGenre(genreId: Int, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int) } extension SeriesMainApi: TargetType { // MARK: API 별로 바뀌는 부분 var path: String { switch self { case .fetchHome: return "/audio-content/series/main" case .getRecommendSeriesList: return "/audio-content/series/main/recommend" case .getDayOfWeekSeriesList: return "/audio-content/series/main/day-of-week" case .getGenreList: return "/audio-content/series/main/genre-list" case .getSeriesListByGenre: return "/audio-content/series/main/list-by-genre" } } var task: Moya.Task { switch self { case .fetchHome(let isAdultContentVisible, let contentType): let parameters = [ "isAdultContentVisible": isAdultContentVisible, "contentType": contentType, ] as [String : Any] return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) case .getRecommendSeriesList(let isAdultContentVisible, let contentType): let parameters = [ "isAdultContentVisible": isAdultContentVisible, "contentType": contentType, ] as [String : Any] return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) case .getDayOfWeekSeriesList(let dayOfWeek, let isAdultContentVisible, let contentType, let page, let size): let parameters = [ "dayOfWeek": dayOfWeek, "isAdultContentVisible": isAdultContentVisible, "contentType": contentType, "page": page - 1, "size": size ] as [String : Any] return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) case .getGenreList(let isAdultContentVisible, let contentType): let parameters = [ "isAdultContentVisible": isAdultContentVisible, "contentType": contentType, ] as [String : Any] return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) case .getSeriesListByGenre(let genreId, let isAdultContentVisible, let contentType, let page, let size): let parameters = [ "genreId": genreId, "isAdultContentVisible": isAdultContentVisible, "contentType": contentType, "page": page - 1, "size": size ] as [String : Any] return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) } } // MARK: 공통적인 부분 var baseURL: URL { return URL(string: BASE_URL)! } var method: Moya.Method { return .get } var headers: [String : String]? { return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"] } }