Files
sodalive-ios/SodaLive/Sources/Home/HomeApi.swift

86 lines
2.3 KiB
Swift

//
// HomeApi.swift
// SodaLive
//
// Created by klaus on 7/10/25.
//
import Foundation
import Moya
enum HomeApi {
case getHomeData
case getLatestContentByTheme(theme: String)
case getDayOfWeekSeriesList(dayOfWeek: SeriesPublishedDaysOfWeek)
case getRecommendContents
case getContentRankingBySort(sort: ContentRankingSortType)
}
extension HomeApi: TargetType {
var baseURL: URL {
return URL(string: BASE_URL)!
}
var path: String {
switch self {
case .getHomeData:
return "/api/home"
case .getLatestContentByTheme:
return "/api/home/latest-content"
case .getDayOfWeekSeriesList:
return "/api/home/day-of-week-series"
case .getRecommendContents:
return "/api/home/recommend-contents"
case .getContentRankingBySort:
return "/api/home/content-ranking"
}
}
var method: Moya.Method {
return .get
}
var task: Moya.Task {
switch self {
case .getHomeData:
let parameters = [
"timezone": TimeZone.current.identifier
] as [String: Any]
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
case .getLatestContentByTheme(let theme):
let parameters = [
"theme": theme
] as [String: Any]
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
case .getDayOfWeekSeriesList(let dayOfWeek):
let parameters = [
"dayOfWeek": dayOfWeek
] as [String: Any]
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
case .getRecommendContents:
return .requestPlain
case .getContentRankingBySort(let sort):
let parameters = [
"sort": sort
] as [String: Any]
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
}
}
var headers: [String : String]? {
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
}
}