sodalive-ios/SodaLive/Sources/Live/Room/Routlette/RouletteApi.swift

73 lines
1.8 KiB
Swift

//
// RouletteApi.swift
// SodaLive
//
// Created by klaus on 2023/12/06.
//
import Foundation
import Moya
enum RouletteApi {
case getRoulette(creatorId: Int)
case createOrUpdateRoulette(request: CreateOrUpdateRouletteRequest)
case spinRoulette(request: SpinRouletteRequest)
case refundRouletteDonation(roomId: Int)
}
extension RouletteApi: TargetType {
var baseURL: URL {
return URL(string: BASE_URL)!
}
var path: String {
switch self {
case .getRoulette, .createOrUpdateRoulette:
return "/roulette"
case .spinRoulette:
return "/roulette/spin"
case .refundRouletteDonation(let roomId):
return "/roulette/refund/\(roomId)"
}
}
var method: Moya.Method {
switch self {
case .getRoulette:
return .get
case .createOrUpdateRoulette, .spinRoulette, .refundRouletteDonation:
return .post
}
}
var task: Moya.Task {
switch self {
case .getRoulette(let creatorId):
let parameters = [
"creatorId": creatorId
] as [String : Any]
return .requestParameters(
parameters: parameters,
encoding: URLEncoding.queryString
)
case .createOrUpdateRoulette(let request):
return .requestJSONEncodable(request)
case .spinRoulette(let request):
return .requestJSONEncodable(request)
case .refundRouletteDonation:
return .requestPlain
}
}
var headers: [String : String]? {
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
}
}