73 lines
1.8 KiB
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))"]
|
|
}
|
|
}
|