UserInfoEndpoint.swift 1.92 KB
//
//  UserInfoEndpoint.swift
//  hippo-watch Watch App
//
//  Created by 权海 on 2026/6/22.
//

import Foundation

enum UserInfoEndpoint: APIEndpoint {
    case getVipInfo
    case getMyUserInfo
    case getFriendInfo
    case getWatchTheme
    
    case uploadDeviceInfo(deviceInfo: String?, deviceToken: String?, watchDeviceToken: String?)
    
    var path: String {
        switch self {
        case .getVipInfo:
            return "/client/doublefeel/user/vip/info/"
        case .getMyUserInfo:
            return "/client/doublefeel/user/info/"
        case .getFriendInfo:
            return "/client/doublefeel/health/v2/friends/"
        case .getWatchTheme:
            return "/client/doublefeel/theme/watch_theme/list/"
        case .uploadDeviceInfo:
            return "/client/doublefeel/user/device/"
        }
    }
    
    var method: HTTPMethod {
        switch self {
        case .getVipInfo, .getMyUserInfo, .getFriendInfo, .getWatchTheme:
            return .get
        case .uploadDeviceInfo:
            return .post
        }
    }
    
    var parameters: [String: Any]? {
        switch self {
        case .getVipInfo, .getMyUserInfo, .getWatchTheme:
            return nil
        case .getFriendInfo:
            let params: [String: Any] = [
                "with_health_data": 0
            ]
            return params
        case let .uploadDeviceInfo(deviceInfo, deviceToken, watchDeviceToken):
            var params: [String: Any] = [:]
            params["push_platform"] = "100"
            params["device_info"] = deviceInfo
            params["device_token"] = deviceToken
            params["watch_device_token"] = watchDeviceToken
            return params
        }
    }
    
    var encoding: ParameterEncoding {
        switch self {
        case .getVipInfo, .getMyUserInfo, .getFriendInfo, .getWatchTheme:
            return .url
        case .uploadDeviceInfo:
            return .json
        }
    }
}