sodalive-ios/SodaLive/Sources/MyPage/Can/CanApi.swift

125 lines
3.2 KiB
Swift

//
// CanApi.swift
// SodaLive
//
// Created by klaus on 2023/08/10.
//
import Foundation
import Moya
enum CanApi {
case getCanStatus
case getCanChargeStatus
case getCanUseStatus
case getCans
case chargeCan(request: CanChargeRequest)
case verify(request: CanVerifyRequest)
case pgChargeCan(request: PgChargeRequest)
case pgVerify(request: PgVerifyRequest)
case pgVerifyHecto(request: PgVerifyRequest)
case useCanCoupon(request: UseCanCouponRequest)
}
extension CanApi: TargetType {
var baseURL: URL {
return URL(string: BASE_URL)!
}
var path: String {
switch self {
case .getCanStatus:
return "/can/status"
case .getCanChargeStatus:
return "/can/status/charge"
case .getCanUseStatus:
return "/can/status/use"
case .getCans:
return "/can"
case .chargeCan:
return "/charge/apple"
case .verify:
return "/charge/apple/verify"
case .pgChargeCan:
return "/charge"
case .pgVerify:
return "/charge/verify"
case .pgVerifyHecto:
return "/charge/verify/hecto"
case .useCanCoupon:
return "/can/coupon/use"
}
}
var method: Moya.Method {
switch self {
case .getCanStatus, .getCanChargeStatus, .getCanUseStatus, .getCans:
return .get
case .chargeCan, .verify, .pgChargeCan, .pgVerify, .pgVerifyHecto, .useCanCoupon:
return .post
}
}
var task: Task {
switch self {
case .getCanStatus:
return .requestParameters(
parameters: ["container" : "ios"],
encoding: URLEncoding.queryString
)
case .getCanChargeStatus, .getCanUseStatus:
return .requestParameters(
parameters: [
"timezone": TimeZone.current.identifier,
"page": 0,
"size": 30,
"container": "ios"
],
encoding: URLEncoding.queryString
)
case .getCans:
return .requestPlain
case .chargeCan(let request):
return .requestJSONEncodable(request)
case .verify(let request):
return .requestJSONEncodable(request)
case .pgChargeCan(let request):
return .requestJSONEncodable(request)
case .pgVerify(let request):
return .requestJSONEncodable(request)
case .pgVerifyHecto(let request):
return .requestJSONEncodable(request)
case .useCanCoupon(let request):
return .requestJSONEncodable(request)
}
}
var headers: [String : String]? {
switch self {
default:
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
}
}
}