feat(gift): 선물 API 저장소를 추가한다
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import Foundation
|
||||
|
||||
import Moya
|
||||
|
||||
enum GiftApi {
|
||||
case getFormOptions
|
||||
case create(request: CreateGiftRequest)
|
||||
case getGifts(page: Int, size: Int)
|
||||
case getGift(applicationNo: String)
|
||||
case cancel(applicationNo: String)
|
||||
case registerTracking(applicationNo: String, request: RegisterGiftTrackingRequest)
|
||||
case submitRecipientAddress(applicationNo: String, request: SubmitGiftRecipientAddressRequest)
|
||||
}
|
||||
|
||||
extension GiftApi: TargetType {
|
||||
var baseURL: URL {
|
||||
return URL(string: BASE_URL)!
|
||||
}
|
||||
|
||||
var path: String {
|
||||
switch self {
|
||||
case .getFormOptions:
|
||||
return "/api/v2/gifts/form-options"
|
||||
case .create, .getGifts:
|
||||
return "/api/v2/gifts"
|
||||
case .getGift(let applicationNo):
|
||||
return "/api/v2/gifts/\(applicationNo)"
|
||||
case .cancel(let applicationNo):
|
||||
return "/api/v2/gifts/\(applicationNo)/cancel"
|
||||
case .registerTracking(let applicationNo, _):
|
||||
return "/api/v2/gifts/\(applicationNo)/tracking"
|
||||
case .submitRecipientAddress(let applicationNo, _):
|
||||
return "/api/v2/gifts/\(applicationNo)/recipient-address"
|
||||
}
|
||||
}
|
||||
|
||||
var method: Moya.Method {
|
||||
switch self {
|
||||
case .getFormOptions, .getGifts, .getGift:
|
||||
return .get
|
||||
case .create, .cancel, .registerTracking, .submitRecipientAddress:
|
||||
return .post
|
||||
}
|
||||
}
|
||||
|
||||
var task: Moya.Task {
|
||||
switch self {
|
||||
case .getFormOptions, .getGift, .cancel:
|
||||
return .requestPlain
|
||||
case .create(let request):
|
||||
return .requestJSONEncodable(request)
|
||||
case .getGifts(let page, let size):
|
||||
return .requestParameters(
|
||||
parameters: [
|
||||
"type": "ALL",
|
||||
"page": page,
|
||||
"size": size
|
||||
],
|
||||
encoding: URLEncoding.queryString
|
||||
)
|
||||
case .registerTracking(_, let request):
|
||||
return .requestJSONEncodable(request)
|
||||
case .submitRecipientAddress(_, let request):
|
||||
return .requestJSONEncodable(request)
|
||||
}
|
||||
}
|
||||
|
||||
var headers: [String: String]? {
|
||||
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import Foundation
|
||||
import Combine
|
||||
|
||||
import CombineMoya
|
||||
import Moya
|
||||
|
||||
final class GiftRepository {
|
||||
private let api = MoyaProvider<GiftApi>()
|
||||
|
||||
func getFormOptions() -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.getFormOptions)
|
||||
}
|
||||
|
||||
func createGift(request: CreateGiftRequest) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.create(request: request))
|
||||
}
|
||||
|
||||
func getGifts(page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.getGifts(page: page, size: size))
|
||||
}
|
||||
|
||||
func getGift(applicationNo: String) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.getGift(applicationNo: applicationNo))
|
||||
}
|
||||
|
||||
func cancelGift(applicationNo: String) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.cancel(applicationNo: applicationNo))
|
||||
}
|
||||
|
||||
func registerTracking(
|
||||
applicationNo: String,
|
||||
request: RegisterGiftTrackingRequest
|
||||
) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.registerTracking(applicationNo: applicationNo, request: request))
|
||||
}
|
||||
|
||||
func submitRecipientAddress(
|
||||
applicationNo: String,
|
||||
request: SubmitGiftRecipientAddressRequest
|
||||
) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.submitRecipientAddress(applicationNo: applicationNo, request: request))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user