feat: 라이브 30분 연속 청취시 트래킹 API 호출 기능 추가

This commit is contained in:
Yu Sung
2025-05-17 17:29:48 +09:00
parent 35d98b2378
commit 0e61ee1adf
5 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
//
// UserActionApi.swift
// SodaLive
//
// Created by klaus on 5/17/25.
//
import Foundation
import Moya
enum UserActionApi {
case trackEvent(request: UserActionRequest)
}
extension UserActionApi: TargetType {
var baseURL: URL {
return URL(string: BASE_URL)!
}
var path: String {
switch self {
case .trackEvent:
return "/user-action"
}
}
var method: Moya.Method {
switch self {
case .trackEvent:
return .post
}
}
var task: Moya.Task {
switch self {
case .trackEvent(let request):
return .requestJSONEncodable(request)
}
}
var headers: [String : String]? {
return ["Authorization": "Bearer \(UserDefaults.string(forKey: UserDefaultsKey.token))"]
}
}

View File

@@ -0,0 +1,19 @@
//
// UserActionRepository.swift
// SodaLive
//
// Created by klaus on 5/17/25.
//
import Foundation
import CombineMoya
import Combine
import Moya
final class UserActionRepository {
private let api = MoyaProvider<UserActionApi>()
func trackEvent(actionType: ActionType) -> AnyPublisher<Response, MoyaError> {
return api.requestPublisher(.trackEvent(request: UserActionRequest(actionType: actionType)))
}
}

View File

@@ -0,0 +1,14 @@
//
// UserActionRequest.swift
// SodaLive
//
// Created by klaus on 5/17/25.
//
struct UserActionRequest: Encodable {
let actionType: ActionType
}
enum ActionType: String, Encodable {
case LIVE_CONTINUOUS_LISTEN_30
}